Попытка получить текст через сокет - PullRequest
0 голосов
/ 01 октября 2011

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

    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {

        //TODO Need filshills public ip address
        echoSocket = new Socket("xxxxxx",xx);

    } catch (UnknownHostException e) {
        System.err.println("Don't know about host.");

    } catch (IOException e) {
        System.err.println("Couldn't get I/O for "
                           + "the connection to host.");

    }
    PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(echoSocket.getOutputStream())), true);

    //PrintWriter pw = new PrintWriter(echoSocket.getOutputStream(), true);
    pw.flush();

    pw.print("MS01,test,06,000027,01\r\n");
    pw.close();
    try{
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
    String check = stdIn.readLine();
    check = check + "";
    //BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    String userInput;

    while ((userInput = stdIn.readLine()) != null) {
        out.println(userInput);
        System.out.println("echo: " + in.readLine());
         stdIn.close();
    }
    }catch ( Exception e)
    {
        String neil = e.getMessage();
        neil = neil + "";
    }
    out.close();
    in.close();

    echoSocket.close();

1 Ответ

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

Попробуйте не закрывать PrintWriter, в соответствии с getOutputStream , close закроет сокет:

Закрытие возвращенного OutputStream закроет связанный сокет.

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