0

最初にサーバーを起動してからクライアントを起動すると、すべてが完璧に機能しますが、最初にクライアントを起動してからサーバーを起動すると(svrがクラッシュしてから再びオンラインになったときにクライアントが接続できることを確認します)、クライアントは接続しますサーバーに接続しますが、2,3 秒後に SocketException: Connection reset がスローされます。何が原因なのかわからないので、誰かがこれを理解するのを手伝ってくれたら本当に感謝しています.

クライアントを処理するサーバー コード:

public ServerHandler(Socket socket){
    try{
        pw = new PrintWriter(socket.getOutputStream());
        writerHolder[userCounter] = pw;

        InputStreamReader in = new          InputStreamReader(socket.getInputStream());
        reader = new BufferedReader(in);


        userCounter++;// Increment the number of people connected

    }catch(Exception ex)
    {
        ex.printStackTrace();
    }
}

サーバーに接続するクライアント コード:

    private  void startConnection()
{
    try
    {
        sock = new Socket("192.168.1.5", 5000);
        InputStreamReader input = new InputStreamReader(sock.getInputStream());
        reader = new BufferedReader(input);
        pw = new PrintWriter(sock.getOutputStream());
        JOptionPane.showMessageDialog(null, "Connected to the server!");

    }catch(IOException ex)
    {
        //timer.reconnectTimer(20);
        ex.printStackTrace();
    }
}

スタックトレース:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at homeControl.ServerHandler.run(ServerHandler.java:52)
at java.lang.Thread.run(Unknown Source)
4

1 に答える 1

1

「接続のリセット」は通常、送信したデータを読み取らずにリモート側がソケットの側を閉じたことを意味します。ソケットを閉じる前に、送信されたデータを必ず読んでください。

于 2013-09-24T17:14:04.310 に答える