从客户端java读取数据时出现连接重置错误

时间:2013-08-24 16:16:33

标签: java sockets

我正在使用Java Socket开发Client-Server App。我的应用程序具有将在端口上侦听的服务器

  • 客户端将连接到该端口
  • 从客户端接收数据
  • 向客户发送数据

我的代码的一部分

public void run() {
    System.out.println("Got a client !");
    try {
        // Get Data From Client
        int red = -1;
        byte[] buffer = new byte[5 * 1024]; // a read buffer of 5KiB
        byte[] redData;
        StringBuilder clientData = new StringBuilder();
        String redDataText;
        while ((red = clientSocket.getInputStream().read(buffer)) > -1) {

/* Get Data From Client Here Code Hidden */

            System.out.println("Data From Client :"
                    + clientData.toString());

            OutputStream out = clientSocket.getOutputStream();
            DataOutputStream dos = new DataOutputStream(out);

            String sDataToClient = "TEST DATA TO SEND IN BYTE ARRAY";

            byte[] b = sDataToClient.getBytes("UTF-8");

            byte[] bClientSend = new byte[b.length + 2];

            bClientSend[0] = (byte) 1;
            bClientSend[1] = (byte) 79;

            System.arraycopy(b, 0, bClientSend, 2, b.length);

            dos.write(bClientSend);
            System.out.println(Arrays.toString(bClientSend));

        }
        clientSocket.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我在以下行向客户发送数据后<{1}}

java.net.SocketException: Connection reset

我能够看到while ((red = clientSocket.getInputStream().read(buffer)) > -1) { 的数组内容然后发生错误

1 个答案:

答案 0 :(得分:0)

Quoting a duplicate post

  
    

有几种可能的原因。

  
     

另一端故意重置连接,以我的方式   不会在这里记录。这是罕见的,通常是不正确的   应用软件这样做,但商业上并不为人所知   软件

     

更常见的是,它是由写入另一个连接引起的   结束已经正常结束。换句话说,一个应用程序   协议错误。

     

在Windows中,&#39;软件导致连接中止&#39;,这是不一样的   因为&#39;连接重置&#39;,是由您的网络问题发送引起的   结束。有关于此的Microsoft知识库文章。