Отправка данных TCP из Android (в качестве клиента) - данные не отправляются? - PullRequest
12 голосов
/ 10 июня 2011

Я пытаюсь отправить данные из моего приложения 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");              

Я не получаю никаких ошибок при этом, однако серверное приложение (написанное на C #) не получает никаких данных. Он видит, что клиент подключается к нему, и видит, что данные отправляются, однако строка данных выходит пустой ... И мысли о том, почему это происходит?

PS: код сервера скопирован со следующего сайта и протестирован с клиентом C # TCP. http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server

Ответы [ 3 ]

17 голосов
/ 10 июня 2011

Попробуйте поставить out.flush();out.close(); после println(..);

10 голосов
/ 31 октября 2012

У меня была та же проблема, и решения Хафазарда были недостаточно хороши для меня. Я думаю, что вы должны использовать (в данном случае) output.flush(); и output.close(); вместо out.flush(); и out.close();. И вы должны помнить о разрешении на Интернет в AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

после <uses-sdk> и до <application>

2 голосов
/ 10 июня 2011

Всего угадайте, но вы пытались вызвать flush() в потоке вывода перед закрытием?

...