Ожидание сообщения от сервера, используя сокет и поток - PullRequest
1 голос
/ 24 октября 2011

прошу прощения за правописание, я француз, я постараюсь сделать все возможное.

Я создаю приложение, которое взаимодействует с сервером, используя сокет. Это приложение чата с моим школьным протоколом чата. Сервер может отправить мне сообщение в любое время. Я настаиваю на «в любое время». Я хотя и делаю цикл while (true) в потоке, но, похоже, он не работает.

Подводя итог: я хочу ждать сообщений от сервера.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 24 октября 2011

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

например:

class Reader implements Runnable{
    Scanner scan=null;
    public Reader(Scanner scan){
    this.scan=scan;
    new Thread(this).start();
}
public void run(){
    while(true){
        putToGui(scan.next());
    }
}
}
...