2016-07-31 67 views
-3
inStream = new ObjectInputStream(this.socket.getInputStream()); 
Packet rank = (Packet)inStream.readObject(); 

嗨, 我應該從兩個客戶端接收數組。我只能從客戶端接收並提示這樣的錯誤:在此先感謝java socket ObjectInputStream

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) 
+0

最有可能的發送方寫的對象,但沒」關閉()或甚至刷新()連接。 –

回答

1

我應該從兩個客戶端收到一個陣列。我只可以從客戶端接收並提示這樣的錯誤

java.net.SocketException: Connection reset 

我想你可能誤解插槽如何工作。套接字表示一個客戶端和一個服務器之間的連接。您似乎在說,您期望從一個Socket上的2個不同客戶端獲取數據。這是不可能的。這沒有意義。對於服務器正在與之通信的每個客戶端,您需要單獨的Socket

你所看到的(連接重置)是可以解釋的:對等體(即客戶機或客戶機的操作系統)由於某種原因重置了連接。 Java(?)客戶端應用程序可能調用close()shutdownOutput(),或者它可能剛剛退出。

(你還沒有告訴我們足夠的代碼建議解決您的問題的最佳方式。是插座由客戶端或服務器打開?)