sockety i aplety

0

Witam, mam zrobić grę garciaą na socketach i mam już serwer - aplikację, i dwa aplety, które łączą się z serwerem i to działa. Problem polega na tym, że (a razie na próbę) w pętli wysyłam coś do serwera i czekam a odp, ale jakby aplet nie robi w tym czasie nic innego, nie pokazuję się nic , mimo że umieszczam tam komponenty, gdy nie ma pętli to wszystko widać, bardzo proszę o radę, jak to rozwiązać. Ta pętla wygląda tak:

while ((fromServer = in.readLine()) != null) {				
             System.out.println("Server: " + fromServer);
             fromUser = stdIn.readLine();
	if (fromUser != null) {
	             System.out.println("Client: " + fromUser);
		out.println(fromUser);
	}
}
0

przypuszczam, że musisz stworzyć sobie threada do wykonywania komunikacji. Normalnie to wszystko sie robi liniowo, dopóki petla sie nie skonczy nic sie nie bedzie dalej działo.

0

tak jak wyżej. Musisz zrobić sobie wątek odpowiedzialny za pobieranie danych ze strumienia. Inaczej cała aplikacja "wisi" ponieważ oczekuje na te dane.

class watek extends Thread {
  public watek(){
     start();
   }
  
   public void run(){
      while ((fromServer = in.readLine()) != null) {                               
             System.out.println("Server: " + fromServer);
             fromUser = stdIn.readLine();
        if (fromUser != null) {
                     System.out.println("Client: " + fromUser);
                out.println(fromUser);
        }
      }
   }
}

Tą klasę umieszczasz sobie gdzieś w tej klasie w której wykonywałeś ten kod natomiast w miejscu wykonania kodu tworzysz sobie ten wątek :

watek w = new watek(); 

W ten sposób nie powinno ci sie zawieszać

1 użytkowników online, w tym zalogowanych: 0, gości: 1