【发布时间】:2015-09-14 15:31:14
【问题描述】:
我想通过从客户端 Socket OutputStream (socket.getOutputStream().write(42)) 发送数据来检测服务器端套接字关闭(由 socket.setSoTimeout 关闭)。如果 Socket 在服务器端关闭,这应该会导致异常。但如果我发送数据两次,它只会引发异常:
private boolean sendTest() {
try {
System.out.print("connection...");
socket.getOutputStream().write(42); //Sending "*"
socket.getOutputStream().write(42); //not working without this line
System.out.println("ok");
return true;
} catch (IOException e) {
System.out.println("error...disconnecting socket");
disconnect();
return false;
}
}
你如何解释这种行为?
【问题讨论】:
-
socket.getOutputStream().write(42);无法保证这实际上会发送任何内容。您应该在输出流上调用 flush() 以强制发送数据 -
@ControlAltDel 不起作用...没有异常
-
这个问题是重复的:stackoverflow.com/questions/151590/…
-
@pmdelatorre 不完全...我想知道为什么只发送第二次数据给我一个例外
标签: java sockets outputstream