java 套接字对象输入流

java socket ObjectInputStream

inStream = new ObjectInputStream(this.socket.getInputStream());
Packet rank = (Packet)inStream.readObject();

你好, 我应该从两个客户那里收到一个数组。我只能从客户端接收并提示这样的错误:提前致谢

 java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:209)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2338)
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2351)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
    at ServerGraph$Handler.run(ServerGraph.java:350)

I supposed to receive an array from two clients. I can only receive from a client and prompt an error like this

 java.net.SocketException: Connection reset

我认为您可能误解了套接字的工作原理。套接字代表一个客户端和一个服务器之间的连接。您似乎是在说您希望在单个 Socket 上从 2 个不同的客户端获取数据。这是不可能的。这没有意义。您的服务器正在与之通信的每个客户端都需要一个单独的 Socket

您所看到的(连接重置)是可以解释的:对等方(即客户端或客户端的 OS)由于某种原因重置了连接。 Java (?) 客户端应用程序可能调用了 close()shutdownOutput(),或者它可能刚刚退出。

(您没有向我们展示足够的代码来建议解决问题的最佳方法。套接字是由客户端还是服务器打开的?)