在客户端断开连接后是否可以重新使用InputStream?

时间:2014-04-30 00:08:25

标签: java sockets tcp stream

我的服务器在端口上打开一个serversocket,然后等待客户端以无限循环连接。连接的第一个客户端发送一些整数和映射然后断开连接,但是,服务器仍应等待其他客户端。我的问题是,在从第一个客户端正确接收这些内容之后,我无法在同一个套接字的输入流/输出流上打开更多的扫描仪和打印机。客户端可以连接,但不能发送或接收任何数据,我只是不明白这里阻止流的是什么:

ServerSocket serv = new ServerSocket(port);

while(true) {
    Socket sock = serv.accept();
    ObjectInputStream instream = new ObjectInputStream(sock.getInputStream());
    // receiving and handling the data here
    Scanner scan = new Scanner(sock.getInputStream());
    // trying to receive lines here from scanner but it's blocked
}

在我之前提到的客户端代码中,在发送了地图和其他对象之后,我刷新了ObjectOutputStream。

此外,我之前在我的代码中关闭System.in上的扫描程序之前我遇到了类似扫描程序的问题,之后我无法在System.in上使用任何扫描程序,但是在此服务器代码中我#&# 39;收到物品后没有关闭任何东西,这就是为什么我不明白为什么它被阻挡了。

那么可以像这样重新使用InputStream,还是应该为其他传入的客户端打开另一个套接字?如果不可能,我应该改变什么?

0 个答案:

没有答案