Чтение BufferedReader из сокета - PullRequest
0 голосов
/ 07 октября 2011

У меня есть буферизированный ридер, и по какой-то причине он не будет читать текст из потока печати, который я отправляю от моего клиента. Это точка, в которой происходит сбой каждый раз, когда строка = in.readline

Также я проверил и сервер подключен.

Это ошибка

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    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 Server.ServerListener$getXML.run(ServerListener.java:82)
    at java.lang.Thread.run(Thread.java:662)

Заранее спасибо

       BufferedReader in = new BufferedReader(new       InputStreamReader(server.getInputStream()));
            //PrintStream out = new PrintStream(server.getOutputStream());
            System.out.println("Start");
            //read the xml
           boolean connected = server.isConnected();
            System.out.println("xml: "+ connected);
            line = in.readLine();
            System.out.println("Postread");
            while ((line = in.readLine()) != null) {               
                System.out.println("while1");
                xml = xml + line;
                System.out.println("while2");
            }`

1 Ответ

2 голосов
/ 07 октября 2011

isConnected () сообщает вам, подключен ли ваш сокет к соединению, а не подключено ли соединение к узлу.Очевидно, вы не все еще подключены.«Сброс соединения» имеет несколько возможных причин: вы записали соединение, которое уже было закрыто другим концом (ошибка протокола приложения);другой конец прервал соединение;локальный стек TCP обнаружил сетевые ошибки при отправке и отказался.Первым из них является наиболее вероятный подозреваемый.И не используйте PrintStreams / Writers по сети, поскольку они поглощают исключения, о которых вам нужно знать.И вы отбрасываете строку данных при первом вызове readLine (): удалите его и просто оставьте один в цикле.

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