【问题标题】:Sending TCP data from Android (as client) - no data being sent?从 Android(作为客户端)发送 TCP 数据 - 没有发送数据?
【发布时间】:2011-09-12 15:28:53
【问题描述】:

我正在尝试通过 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

【问题讨论】:

  • 你是在设备上还是在模拟器上?您的清单中有互联网权限吗?

标签: android sockets tcp client communication


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,Haphazard 的解决方案对我来说还不够好。我认为您应该(在这种情况下)使用output.flush();output.close(); 而不是out.flush();out.close();。你必须记住AndroidManifest.xml中的互联网权限:

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

    &lt;uses-sdk&gt; 之后和&lt;application&gt; 之前

    【讨论】:

    • 是的,你是正确的@CookieMonssster, output.flush();和 output.close();为我工作。感谢您在这里更正。
    【解决方案3】:

    总猜这个,但是你有没有试过在关闭之前在输出流上调用flush()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2021-11-03
      相关资源
      最近更新 更多