Java 从套接字丢弃输入
从Java 从套接字丢弃输入,java,sockets,inputstream,Java,Sockets,Inputstream,从Socket文档: 关机输入 public void shutdownInput() throws IOException 将此套接字的输入流置于“流的末尾”。发送到套接字的输入流端的任何数据都会被确认,然后被悄悄地丢弃 如果在调用套接字上的shutdownInput()后从套接字输入流读取,则该流将返回EOF 为了测试服务器中客户端之间的交互,我编写了一些客户端机器人程序。 这些机器人程序生成一些随机的客户端请求。由于它们只向服务器写入数据,因此不需要
Socket
文档:
关机输入
public void shutdownInput()
throws IOException
将此套接字的输入流置于“流的末尾”。发送到套接字的输入流端的任何数据都会被确认,然后被悄悄地丢弃
如果在调用套接字上的shutdownInput()后从套接字输入流读取,则该流将返回EOF
为了测试服务器中客户端之间的交互,我编写了一些客户端机器人程序。
这些机器人程序生成一些随机的客户端请求。由于它们只向服务器写入数据,因此不需要输入流,也不需要读取服务器发送的更新。这是机器人程序的主要代码:
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()
时的行为取决于平台
shutdownInput()
。它唯一真正有用的是解除对读取的阻止。在您的情况下,您必须阅读服务器响应