【发布时间】:2017-01-10 21:50:14
【问题描述】:
我编写了一个脚本来在客户端和服务器之间通过特定端口上的套接字交换数据。 按顺序,我期待:
服务器正在监听
客户端打开一个套接字
服务器通过发送 int 确认 -> 从未收到!
我刚刚注意到我的客户端收到了 int,当我粗暴地退出服务器时
这是我的(简单)代码。 客户:
Socket socket = new Socket(SERVER_ADDR, PORT);
DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
DataInputStream dIn = new DataInputStream(socket.getInputStream());
Log.v("[DEBUG]", "waiting aknowledgement");
status = dIn.readInt(); //<-- BLOCKS HERE
Log.v("[DEBUG]", "ack"); //<-- RECEIVED WHEN SERVER IS EXITED
服务器:
try {
DataInputStream stdIn = new DataInputStream(client.getInputStream());
DataOutputStream stdOut = new DataOutputStream(client.getOutputStream());
while (incoming) {
stdOut.writeInt(1);
stdOut.flush();
System.out.println("Waiting...");
var_from_client = stdIn.readInt(); //<-- BLOCKS HERE (BECAUSE CLIENT IS BLOCKED)
// ...
}
} catch (Exception e) {}
如何解释这个错误?
【问题讨论】:
标签: android sockets datainputstream dataoutputstream