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

こんにちは 私は2つのクライアントから配列を受け取ることになっていました。私は2つのクライアントからの配列を受け取ることになって事前に感謝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

ほとんどの場合、送信側は、オブジェクトを書き込むが、」didnの接続を閉じる()、またはフラッシュする()こともできます。 –

答えて

1

:私は、クライアントから受信して、このようなエラーを促すことができます。私は、私はあなたがどのようにソケットの仕事を誤解するかもしれないと思うこの

java.net.SocketException: Connection reset 

のようなエラーをクライアントから受信して促すことができます。ソケットは、1つのクライアントと1つのサーバー間の接続を表します。 1つのSocketで2つの異なるクライアントからデータを取得する予定があると思われるようです。それは不可能です。それは意味をなさない。サーバーが通信しているクライアントごとに個別のSocketが必要です。

あなたが見ているもの(接続のリセット)は説明できます:ピア(クライアントまたはクライアントのOS)が何らかの理由で接続をリセットしました。 Java(?)クライアントアプリケーションはclose()またはshutdownOutput()と呼ばれているか、またはちょうど終了している可能性があります。

(あなたが私達にあなたの問題を解決する最良の方法を提案するための十分なコードを示していない。ソケットは、クライアントまたはサーバによって開かれているか?)