我是Java套接字编程的新手,我正在Android客户端和PC端的Java服务器之间进行基本的套接字通信。服务器可以从客户端接收消息,但是客户端似乎无法从服务器读取消息。我一直想知道为什么会这样。
服务器:
while(true){
try {
socket = serverSocket.accept();
dataInputStream = new DataInputStream(socket.getInputStream());
System.out.println("ip: " + socket.getInetAddress());
System.out.println("message: " + dataInputStream.readUTF());
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeUTF("Hello Client !!!!!!" + "\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
...
...
if (socket != null){
try{
socket.close();
socket = null;
}
catch(Exception e){
e.printStackTrace();
}
}
}
客户:
socket = new Socket(serverIP, 8080);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeUTF(textOut.getText().toString());
dataInputStream = new DataInputStream(socket.getInputStream());
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Log.i(TAG, dataInputStream.readUTF());
textIn.setText(dataInputStream.readUTF());
}
catch (Exception e) {
e.printStackTrace();
}
}
});
在服务器端,一切正常,但Android客户端无法接收数据。readUTF不返回任何内容(还可以在logcat中返回W / System.err)
我终于通过将dataInputStream.readUTF()从runOnUIThread部分移出来解决了这个问题。例如。将其存储在runOnUiThread之前的临时字符串中。我想这应该是菜鸟的错误。
连续调用readUTF()绝对足够愚蠢。
Android客户端无法接收数据
您的客户端尝试读取两条消息,但只发送了一条。
服务器也永远不会关闭连接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句