[SFML Network] Pisanie aplikacji Client-Client
Ostatnio zmodyfikowano 2013-12-18 22:53
domin568 Temat założony przez niniejszego użytkownika |
[SFML Network] Pisanie aplikacji Client-Client » 2013-11-08 18:36:54 Witam, przeszukałem całe forum w poszukiwaniu informacji o połączeniu Client-Client, jednak nic nie znalazłem, w google wpisując "Client-Client coumunication sfml network (albo nawet bez sfml network)" nie znajduje żadnej porządnej informacji oprócz artykułu na wikipedii który opisuje DCC - Direct Client - Client, ostatnio pisząc moją pierwszą aplikacje czatu pewien użytkownik mi napisał żeby zrobić to w systemie - Client - Client, ale z braku wiedzy jak to zrobić muszę się was spytać o możliwe źródła (naprawdę szukałem dość długo informacji na ten temat) lub wasze sposoby pisania takich aplikacji, więc : Jak napisać aplikacje Client - Client (najlepiej w SFML Network) ? |
|
Savail |
» 2013-11-08 18:49:48 W przypadku komunikacji client - client musisz rozważyć wiele czynników, np. to że 2 clienty będą za routerami. Najprostszym rozwiązaniem byłoby pewnie utworzenie serwera, który zachowywałby się jako pośrednik w nawiązaniu połączenia między dwoma clientami. Po nawiązaniu, clienci mogą bezpośrednio ze sobą się komunikować a serwer już dalej nie jest potrzebny. Tutaj jest to dobrze opisane jeśli znasz angielski: http://www.mindcontrol.org/~hplus/nat-punch.html. Są też rozwiązania bez używania serwera pośrednika ale raczej trudno dostępne bo i ja gdy szukałem kiedyś to się nie doszukałem za wiele ; d. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-11-08 18:54:36 Co myślisz mówiąc "Za routerami" ?? |
|
Savail |
» 2013-11-08 19:05:02 Adres routera to adres zewnętrzny który jest widoczny dla wszystkich innych w internecie. Natomiast dla urządzeń podłączonych do jakiejś sieci router przypisuje wewnętrzny adres, znany tylko w obrębie danej sieci. I gdy client jest za routerem i wysyła prośbę o nawiązanie połączenia do drugiego clienta za routerem, to jeśli pakiet dotrze do routera, to i tak router nie wie komu ma go dalej przekazać. Sam adres zewnętrzny routera to za mało informacji, aby był w stanie określić któremu komputerowi w sieci wewnętrznej przekazać dalej ten pakiet. |
|
kubawal |
» 2013-11-08 20:13:00 Poszukaj coś o sieciach p2p (peer-to-peer) |
|
DejaVu |
» 2013-11-19 04:10:20 1. Utwórz serwer UDP. 2. Połącz klienta nr 1 do serwera UDP i prześlij do serwera otwarty port UDP. 3. Z drugim klientem zrób to samo co z pierwszym. 4. Prześlij do klienta nr 2 otwarty port UDP klienta nr 1 (oraz adres IP). 5. Prześlij do klienta nr 1 otwarty port UDP klienta nr 2 (oraz adres IP). 6. Wysyłaj klientem nr 2 pakiety na adres i port jaki otrzymałeś od serwera. 7. Wysyłaj klientem nr 1 pakiety na adres i port jaki otrzymałeś od serwera.
Teoretycznie powinno zadziałać, być może nawet zadziała komunikacja dla komputerów za NAT-em (choć tego pewien nie jestem). Serwer oczywiście musi być widoczny.
PS. Jeżeli nie masz doświadczenia w pisaniu komunikacji sieciowej to nawet nie pchaj się na tą drogę, tylko naucz się najpierw pisać aplikacje sieciowe w modelu klient-serwer. Tam też jest potrzebna cała masa wiedzy oraz potrzeba dużego nakładu pracy, aby coś sensownego zrobić. Komunikacja klient-klient to dodatkowy problem i tym samym większa złożoność problemu. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-11-23 21:56:43 Co masz na myśli mówiąc "Server musi być widoczny " ?? |
|
DejaVu |
» 2013-11-24 14:32:48 Serwer widoczny = serwer, który jest globalnie widoczny w sieci do którego można się dostać przez określony port komunikacyjny, tj. musi być komputer pełniący rolę serwera do którego będą łączyli się klienci i serwer będzie 'rozdawał' klientom bezpośrednią informację na jakich portach dany klient może komunikować się z innymi klientami przy pomocy protokołu UDP. |
|
« 1 » 2 |