Привет, новый в Linux и программировании для Android, моя идея - отправить пакетные данные из Raspberry Pi на Android-телефон через TCP-сокет. . Когда началось соединение, поток данных хорошо, после того, как несколько данных отправили потоковое сообщение, иногда «заклинило».Android Raspberry pi W/System.err (13264): java.net.ConnectException отключено
Мой андроид телефон IP 192.168.43.1 Мой статический IP малина 192.168.43.5
Я пытаюсь изменить номер порта, но соединение все еще застряла, я стараюсь, чтобы уменьшить размер пакета данных, но и до сих пор застряла . Я предполагаю, что брандмауэр малины (если он существует) является проблемой или, может быть, конфигурацией iptables, но как проверить и отключить брандмауэр Raspberry? просто информация, у моей малины не было firestarter. Или как использовать iptables?
Не могли бы вы помочь мне, почему это произошло? Или любая ссылка будет замечательной, спасибо заранее! Вот мой LogCat:
07-30 13:11:20.731: W/System.err(13264): java.net.ConnectException: failed to connect to /192.168.43.20 (port 12345): connect failed: ECONNREFUSED (Connection refused)
07-30 13:11:20.731: W/System.err(13264): at libcore.io.IoBridge.connect(IoBridge.java:118)
07-30 13:11:20.731: W/System.err(13264): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-30 13:11:20.731: W/System.err(13264): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
07-30 13:11:20.731: W/System.err(13264): at java.net.Socket.startupSocket(Socket.java:571)
07-30 13:11:20.731: W/System.err(13264): at java.net.Socket.tryAllAddresses(Socket.java:132)
07-30 13:11:20.731: W/System.err(13264): at java.net.Socket.<init>(Socket.java:182)
07-30 13:11:20.731: W/System.err(13264): at java.net.Socket.<init>(Socket.java:154)
07-30 13:11:20.731: W/System.err(13264): at com.uavgama.Streamingdata.Masukan(Streamingdata.java:19)
07-30 13:11:20.731: W/System.err(13264): at com.uavgama.Adhrsparse.Keluar(Adhrsparse.java:71)
07-30 13:11:20.731: W/System.err(13264): at com.uavgama.Adhrsparse$1.run(Adhrsparse.java:26)
07-30 13:11:20.731: W/System.err(13264): at android.os.Handler.handleCallback(Handler.java:615)
07-30 13:11:20.731: W/System.err(13264): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 13:11:20.731: W/System.err(13264): at android.os.Looper.loop(Looper.java:137)
07-30 13:11:20.731: W/System.err(13264): at android.app.ActivityThread.main(ActivityThread.java:4744)
07-30 13:11:20.731: W/System.err(13264): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 13:11:20.741: W/System.err(13264): at java.lang.reflect.Method.invoke(Method.java:511)
07-30 13:11:20.741: W/System.err(13264): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-30 13:11:20.741: W/System.err(13264): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-30 13:11:20.741: W/System.err(13264): at dalvik.system.NativeStart.main(Native Method)
07-30 13:11:20.741: W/System.err(13264): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
07-30 13:11:20.741: W/System.err(13264): at libcore.io.Posix.connect(Native Method)
07-30 13:11:20.741: W/System.err(13264): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
07-30 13:11:20.741: W/System.err(13264): at libcore.io.IoBridge.connectErrno(IoBridge.java:131)
07-30 13:11:20.741: W/System.err(13264): at libcore.io.IoBridge.connect(IoBridge.java:116)
07-30 13:11:20.741: W/System.err(13264): ... 18 more
Здесь упакованные данные я использовал, чтобы отправить:
$909.29|34.16|160.39907|123.51508|189.56|40.42|339.78#
$62.88|52.38|32.62654|170.11087|19.19|99.57|127.72#
$847.45|65.29|128.59294|114.23773|161.92|268.55|28.90#
$957.35|48.49|142.63874|9.20948|161.73|297.63|348.33#
$634.97|25.16|105.1316|23.51827|185.56|195.88|189.1#
format :
$altitude|airspeed|lat|lon|pitch|roll|yaw#
это малина код Баш для отправки данных
cat /home/pi/file | awk -F'\t' 'END{print}' | nc -l 12345
Вот моя ява код для потоковой передачи данных:
public static String Masukan() {
try {
Socket s;
s = new Socket("192.168.43.20", 12345);
s.getReuseAddress();
s.getTcpNoDelay();
BufferedReader inp = null;
inp = new BufferedReader(new InputStreamReader(s.getInputStream()));
String serverMsg = null;
serverMsg = inp.readLine();
if (serverMsg.endsWith("#")) {
filter = serverMsg;
s.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return filter;
};
Кажется, это исключение выбрано в connect(). Вы случайно подключаете новый сокет для каждой передачи? Правильно ли вы закрываете свои подключения? Если вы это сделаете, и все еще есть проблемы, некоторые из вашего кода были бы полезны, чтобы помочь вам найти эту ошибку. – Bex
Я использую код Java выше, чтобы соединить разъем на малине pi .. – user2307181
Да. Также отправьте код андроида для отправки. – Bex