1

//編集 13:25 クライアント コンソール

Connect to server<br />
Repsonded: Tue May 22 13:23:28 CEST 2012<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Repsonded: Tue May 22 13:23:38 CEST 2012<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />
Connect to server<br />
Not run: java.net.SocketException: Software caused connection abort: recv failed<br />
Disconnect to server<br />

サーバー コンソール

Server Initialized<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
111111<br />
Error(run): java.net.SocketException: Connection reset by peer: socket write error<br />


Server load data and not return repead "Repsonded: Tue May 22 13:23:38 CEST 2012" or client not ouput print.
4

1 に答える 1

0

問題はサーバーの実装にあります。run ステートメントでループして、その接続からの新しい着信メッセージをチェックしていません。情報を一度読み取ってから、finally ステートメントで接続を閉じます。

 @Override
    public void run() {

        try {

            BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
            InputStreamReader isr = new InputStreamReader(is);
            ...
        finally {
            try {
                connection.close();

確かに、サーバーには着信接続要求をチェックするループがあるため、クライアントが各メッセージの送信後にサーバーへの接続を再試行しても、クライアントが要求を 1 つしか送信しない場合 (メイン ステートメントの先頭) にこれが機能します。

したがって、私があなたにアドバイスすること:サーバー側で、runステートメントでストリームなどをセットアップし、それらがセットアップされたら、で無限ループに入り、while(true)そのループでサーバーに入力ストリームから読み取らread()せます。 null を返さない場合は、メッセージを出力します。これにより、サーバーはそのクライアントからの受信データをチェックし、null ではない文字列を取得すると、それを出力します (必要に応じて応答をトリガーします)。

クライアント側にも同じことが言えます。サーバーからの受信メッセージをリッスンするループが必要です

于 2012-05-22T09:39:39.603 に答える