【发布时间】:2013-10-12 15:30:08
【问题描述】:
来自Socket 文档:
关机输入
public void shutdownInput() throws IOException将此套接字的输入流放在“流的末尾”。任何发送到套接字输入流端的数据都会被确认,然后被静默丢弃。
如果您在套接字上调用 shutdownInput() 后从套接字输入流中读取,则该流将返回 EOF。
为了测试服务器中客户端之间的交互,我编写了一些客户端bots。 这些机器人会产生一些随机的客户端请求。由于这些只写入服务器,它们不需要输入流,它们不需要读取服务器发送的更新。这是机器人的主体代码:
private void runWriteBot(PrintWriter out) throws IOException {
//socket.shutdownInput();
String request;
System.out.println("Write bot ready.");
while (!quit) {
request = randomRequest();
out.println(request);
sleep();
}
}
如果我取消注释 shutdownInput,则会在服务器的客户端处理程序中引发异常:
连接重置
我没想到套接字的另一端会抛出异常。文档建议(至少对我而言)对方发送的任何内容都将被默默丢弃,不会干扰对方的活动,ie 不会让对方抛出异常。
我可以忽略服务器发送的内容,还是应该将输入流中的内容排空?
有没有什么自动的方法,还是我需要经常阅读和忽略?
【问题讨论】:
标签: java sockets inputstream