我正在尝试通过TCP将数据从我的Android应用程序发送到我的电脑。
代码如下:
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
答案 0 :(得分:17)
尝试在out.flush();out.close();
;
println(..)
答案 1 :(得分:10)
我遇到了同样的问题,而且Haphazard的解决方案对我来说还不够好。我认为您应该使用(在这种情况下)output.flush();
和output.close();
而不是out.flush();
和out.close();
。您必须记住AndroidManifest.xml
中的互联网权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
在<uses-sdk>
之后和<application>
之前
答案 2 :(得分:2)
总猜这个,但你有没有尝试在关闭前调用输出流上的flush()
?