Closed pbeza closed 8 years ago
Zmieniono implementację na UDP, teraz nie ma żadnego wywołania accept() na ServerSocket'cie. Nawet jak serwer nie słucha, to klient wysyła UDP i ma w poważaniu czy serwer odebrał pakiet (piękno UDP, tak ma być :-)).
Każdy z telefonów przy starcie serwisu tworzy DatagramSocket na ustalonym porcie, a następnie woła na nim blokującą metodę receive(), więc połączenie od drugiego telefonu powinno być zawsze przyjmowane (chyba, że receive() osiągnie timeout, ale wtedy powtarzamy receive() w nieskończoność, chociaż domyślnie timeout jest ustawiony na 0, co oznacza nieskończenie długie czekanie - tak jak chcemy).
Obecnie jest tak, że jeden z telefonów, który jest GroupOwner'em, otwiera ServerSocket i do niego podłącza się drugi telefon. Taki model wprowadza trudność gdy jako pierwszy zadziała telefon, który nie jest GroupOwner'em i będzie próbował się podłączyć do ServerSocket'a telefonu, który nie wywołał jeszcze metody accept() na ServerSocket'cie, który w chwili próby podłączenia telefonu-klienta, może jeszcze nawet nie istnieć.
Trzeba wyeliminować ten problem.