-
Anonim
Piszę aplikację sieciową do przesyłania wiadomości między dwoma użytkownikami w sieci. Oparta jest o datagramy, użytkownik łączy się z drugim przy pomocy DatagramSocket.
No i teraz pojawia się problem - testując to u siebie na maszynie (sam ze sobą), zauważyłem, że jeśli coś uruchamia się w "trybie serwera" (czyli oczekuje na połączenia) i na tym samym porcie siedzi "klient" (ten sam port, ten sam host), to serwer nie może wysyłać wiadomości do klienta, a klient do serwera owszem (klient łączy się z serwerem po wpisaniu do okienka dialogowego adresu hosta). Krótko mówiąc - tworzy się tylko połączenie od klienta do serwera, a z serwera do klienta już nie. Żeby nie było - po ustanowieniu połączenia serwer sam ustanawia z połączenie z klientem (czyli komunikacja odbywa się tak naprawdę na dwóch socketach - jeden odbiera, drugi nadaje). Dlaczego to nie działa, tak jak powinno? Bawiąc się zwykłymi socketami mogłem się łączyć sam ze sobą (w sensie dwa różne klienty ze sobą), a tutaj już to nie daje rady. -
Shamrock
Ustaw inny port dla klienta inny port dla serwera. Mozna ustawic staly port serwera a klientowi zostawic dowolnosc , lub jesli jest firewall jakis port na stale , ale inny od serwerowego. Poza tym lepiej jest zaimplementowac rozwiazanie TCP a nie UDP. UDP ma ograniczonia wielkosci datagramu, poza tym jest to tryb bezpolaczeniowy - czyli jesli
wiadomosc zginie to nie bedziesz o tym powiadomiony. -
Anonim
Teraz to już po ptakach. Sama aplikacja była bezserwerowa, tzn. każdy do każdego mógł się podłączyć. Porty ustawiłem dynamiczne, w pierwszym wysyłanym datagramie wysyłam port odbiorczy komputera wysyłającego i ot całe rozwiązanie.
Co do samego wyboru między TCP a UDP - miałem po prostu narzucone, że musi to być UDP.
- Przeglądaj grona w kategorii Internet i Komputery
- Przeglądaj grona w okolicy Warszawa
- Załóż własne grono tematyczne
- Zostań moderatorem
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

