从Android发送TCP数据(作为客户端)-没有数据被发送?

13

我正尝试通过TCP从我的Android应用向PC发送数据。

代码如下:

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


你是在设备上还是模拟器上?在你的清单中有网络许可吗? - Marco Grassi
3个回答

18
尝试在 println(..) 之后加上 out.flush();out.close();

10

我有同样的问题,Haphazard提供的解决方案对我来说不够好。我认为你应该使用(在这种情况下)output.flush();output.close();而不是out.flush();out.close();。并且你必须记住在AndroidManifest.xml中添加网络权限:

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

<uses-sdk><application>之间


是的,@CookieMonssster,你说得对,output.flush(); 和 output.close(); 对我有效。感谢你在这里的纠正。 - VISHAL VIRADIA

2

纯猜测,但你是否尝试在关闭之前调用输出流的flush()方法?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接