Проблема ввода с сокетом Java - PullRequest
0 голосов
/ 18 мая 2011

Я пытаюсь выполнить здесь упражнение по программированию, создавая клиент и сервер, которые работают с сокетами. Для связи между ними я использую PrintWriter и InputReader. С чем я застрял, так это:отправить что-то клиенту, пока клиент ждет ввода?На этом этапе клиентский цикл выглядит примерно так:

do {
                outToServer.println(inFromUser.readLine());
                String fromServer=inFromServer.readLine();
                if(fromServer.equals("OK")){
                    clientSocket.close();
                }else{
                    System.out.println(fromServer);
                }
            } while (!clientSocket.isClosed());

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

1 Ответ

0 голосов
/ 18 мая 2011

Так что вам нужно будет инкапсулировать

outToServer.readLine();

в цикле while, который имеет логическое условие, похожее на функцию hasNext ().Вы можете настроить его следующим образом:

String x = outToServer.readLine();
//while x doesn't equal whatever readLine would return if there's nothing to read
//I'm not sure if this is a null String or not
while(x!=null){
    System.out.print(x);//print it however you wish
    String x = outToServer.readLine();
}

А затем, если необходимо, сделать нечто подобное для inFromServer.

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