繁体   English   中英

BufferedReader.readLine()给出错误java.net.SocketException:软件导致连接中止:recv失败

[英]BufferedReader.readLine() gives error java.net.SocketException: Software caused connection abort: recv failed

我正在尝试对程序进行编码,以使缓冲的读取器从tcp客户端获取readLine()中的内容,但程序执行后立即出现此错误

   Mar 31, 2010 11:03:36 PM deswash.DESWashView$5 run
SEVERE: null
java.net.SocketException: Software caused connection abort: recv failed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at deswash.DESWashView$5.run(DESWashView.java:448)

以下代码中的car = in.readLine()引发错误

 public void getCar(){
        Thread gettingCars = new Thread(){
            @Override
            public void run(){
                try {
                    car = in.readLine();
                    if(!(car.equals(null))){
                        StringTokenizer st = new StringTokenizer(car,";");
                        int carTime = Integer.parseInt(st.nextToken());
                        finTime.setText(""+((Integer.parseInt(currentTime.getText()))+washTime));
                        currentTime.setText(""+carTime);
                        eventTextArea.append(""+car+"\n");
                    }
                } catch (IOException ex) {
                    Logger.getLogger(DESWashView.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        };
        gettingCars.start();
        doOnce=false;
    }

从MSDN:

WSAECONNABORTED (10053)软件导致连接中止

连接中断是由主机内部引起的。 该软件导致连接中止,因为套接字队列中没有空间,并且套接字无法接收进一步的连接。

WinSock描述:当本地网络系统中止连接时,可能会发生错误。 如果WinSock在数据重传失败后中止建立的连接(接收方从不确认在数据流套接字上发送的数据),则会发生这种情况。

TCP / IP方案:如果本地系统未收到发送数据的(ACK)提示,则连接将超时。 如果未确认(FIN)的TCP数据包也将超时(即使FIN已被ACK,如果未返回FIN,它最终也会超时)。

WindowsXP似乎更多地发生了这种情况,这似乎也可能与Windows防火墙设置有关。 在任何情况下,重点都在于中止源于本地计算机内部。

这是一个措辞愚蠢的消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM