BufferedReader.readLine () выдает ошибку - PullRequest
1 голос
/ 01 апреля 2010

Я пытаюсь закодировать мою программу так, чтобы буферизованный читатель получил что-то в readLine () от моего tcp-клиента, но я получаю эту ошибку, как только программа выполняет

   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;
    }

1 Ответ

0 голосов
/ 01 апреля 2010

Из MSDN:

WSAECONNABORTED (10053) Программное обеспечение вызвало прерывание соединения

Внутреннее соединение с вашим хост-компьютером было прервано. Программное обеспечение вызвало прерывание соединения, поскольку в очереди сокета нет места, и сокет не может принимать дальнейшие соединения.

Описание WinSock: ошибка может возникать, когда локальная сетевая система прерывает соединение. Это может произойти, если WinSock прерывает установленное соединение после сбоя повторной передачи данных (получатель никогда не подтверждает данные, отправленные через сокет потока данных).

Сценарий TCP / IP. Соединение будет отключено, если локальная система не получит подтверждение (ACK) для отправленных данных. Это также приведет к превышению времени ожидания, если TCP-пакет (FIN) ish не будет подтвержден ACK (и даже если FIN имеет значение ACK, он в конечном итоге прекратит работу, если FIN не будет возвращен).

Похоже, что больше происходит с WindowsXP, и, возможно, это также связано с настройками брандмауэра Windows. В любом случае существенным моментом является то, что прерывание произошло внутри локальной машины.

Это глупо сформулированное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...