Ответ 1
Попробуйте добавить out.flush();out.close();
после println(..)
;
Я пытаюсь отправить данные из моего приложения Android на свой компьютер через TCP.
Код выглядит следующим образом:
Socket socket = new Socket("10.0.78.75", 50505);
OutputStream out = socket.getOutputStream();
PrintWriter output = new PrintWriter(out);
mStatusText.setText("Sending Data to PC");
output.println("Hello from Android");
mStatusText.setText("Data sent to PC");
socket.close();
mStatusText.setText("Socket closed");
Я вообще не получаю никаких ошибок при выполнении этого, однако серверное приложение (написанное на С#) не получает никаких данных. Он видит, что клиент подключается к нему и видит, что данные отправляются, однако строка данных выходит пустая... И мысли о том, почему это происходит?
PS: код сервера копируется со следующего сайта и был протестирован с помощью клиента С# TCP. http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server
Попробуйте добавить out.flush();out.close();
после println(..)
;
У меня была та же проблема, и решения Haphazard для меня были не очень хороши. Я думаю, что вы должны использовать (в данном случае) output.flush();
и output.close();
вместо out.flush();
и out.close();
. И вы должны помнить о разрешении Интернета в AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
после <uses-sdk>
и до <application>
Догадайтесь об этом, но вы пробовали вызывать flush()
в выходном потоке перед закрытием?