Android套接字不会写入输出

时间:2016-09-02 08:11:26

标签: java android sockets networking

我开发了一个通过TCP套接字连接与服务器通信的应用程序。当我在模拟器上测试它时,它运行得很好。我可以看到所有预期的数据流过。但是当我在我的真实设备上运行应用程序时,它会连接但不会写入。要查看发生了什么,在服务器端我打印接受的客户端和每个接收的字节。所以它表示"新客户接受"但从不写任何收到的字节,这意味着没有收到数据。

我的Android应用程序代码运行,没有任何异常:

clientSocket = new Socket(host, port);
PrintStream output = new PrintStream(clientSocket.getOutputStream());

clientSocket.getOutputStream().write(new byte[]{67,68,75}); //just some random stuff
clientSocket.getOutputStream().flush(); //neither this ...
output.print("hello");                  //... nor this works

在服务器端:

...

Socket clientSocket = server.accept();
DataStreamInput input = new DataInputStream(clientSocket.getInputStream());
System.out.println("New client accepted");

...

StringBuilder sb = new StringBuilder();
char ch = (char)input.readByte();
while (ch != '\0') {
     System.out.println("BYTE received: "+ch); //should print sth no matter what, but doesn't
     sb.append(ch);
     ch = (char)client.getInput().readByte();
}

String data = sb.toString().trim();
dataReceived(data);

我不明白为什么它适用于模拟器但不适用于我的设备。 (三星GT-I9500 btw)不发送或无法发送字节背后的问题是什么?任何想法或任何形式的帮助表示赞赏。感谢...

编辑:发生了一些有趣的事情。当我打印一些东西以便稍后在另一个线程中输出时,它会发送所有这些以前的数据。

0 个答案:

没有答案