No wlasnie bo sie zasnatawialem jak to robie takie gg (tylko nie wyskakiwac teraz z axiome bo nie oto mi biega :) ) No bo jak sie klient laczy z serwerem to serwer wysyla do niego dane no wlasnie ale jak? Kiedys myslalem ze moznaby bylo zrobic cos takiego przy pomocy socketow ale tak chyba sie nie da polaczyc z wew ip no i tuy zonk. Jak to gg to robi wie ktos?
No wlasnie bo sie zasnatawialem jak to robie takie gg (tylko nie wyskakiwac teraz z axiome bo nie oto mi biega :) ) No bo jak sie klient laczy z serwerem to serwer wysyla do niego dane no wlasnie ale jak? Kiedys myslalem ze moznaby bylo zrobic cos takiego przy pomocy socketow ale tak chyba sie nie da polaczyc z wew ip no i tuy zonk. Jak to gg to robi wie ktos?
Tak samo jak np w przypadku odwiedzania stron www... Ty ustanawiasz połaczenie, a potem przpeływ danych może już przebiegać w obie strony...
Pozdrawiam
Kev
Nie to zebym sie czepial ale takie odpowiadanie mnie tak denerwuje bo niczego nie wnosi. To tak jak bys zapytal dlaczego dlaczego delphi jest lepsze od VC++ (albo odwrotnie jak kto woli :) ) No i otrzymalbys odpowiedz: No bo sobie siadasz i piszesz co chcesz :) Nie uwazasz ze to troche za malo :) Nie denerwuj sie ale ja oczekuje jakis konkretow :) Wiec nadal czekam :)
Nie to zebym sie czepial ale takie odpowiadanie mnie tak denerwuje bo niczego nie wnosi. To tak jak bys zapytal dlaczego dlaczego delphi jest lepsze od VC++ (albo odwrotnie jak kto woli :) ) No i otrzymalbys odpowiedz: No bo sobie siadasz i piszesz co chcesz :) Nie uwazasz ze to troche za malo :) Nie denerwuj sie ale ja oczekuje jakis konkretow :) Wiec nadal czekam :)
OK to odpowiem w stylu często tu spotykanym: FAQ...
No chyba że chodzi Ci o opis protokołu GG, wtedy: SZUKAJ :p
http://4programmers.net/Forum/viewtopic.php?id=185#186
Nie chodzi mi o protokul gg bo to juz dawno czytalem ale tam nie ma npisane jak serwer sie laczy z klientem tylko jak klient z serwerem i jest napisane ze serwer wysyla jakies dane do klienta no i to mnie wlasnie interesuje jak ten serwer to robi bo jak ja mam wew to jak on sie zemna laczy :) A jesli chodzi o FAQ to nie bede tego komentowal bo moglaby sie z tego wytorzyc niemila dyskusja :) I nadal czekam...
Nie chodzi mi o protokul gg bo to juz dawno czytalem ale tam nie ma npisane jak serwer sie laczy z klientem tylko jak klient z serwerem i jest napisane ze serwer wysyla jakies dane do klienta no i to mnie wlasnie interesuje jak ten serwer to robi bo jak ja mam wew to jak on sie zemna laczy :) A jesli chodzi o FAQ to nie bede tego komentowal bo moglaby sie z tego wytorzyc niemila dyskusja :) I nadal czekam...
To właśnie Ci psałem... Po połączeniu które TY ustanawiasz, przepływ danych może się już odbywać w obie strony. Na tej zasadzie działa cały internet... Jak? Poczytaj np artykuł o socketach...
Ale tu sockety nie wchodza w gre :) Jak nie wierzysz to radze sprobowac sie ze mna polaczyc przy uzyciu gniazdek :) No tylko mi powiedz co bys wpisal w miejsce na Host? Moze 217.153.19.27 a moze jeszcze lepiej 192.168.0.28 :) Powodzenia polaczenie i tak ci nie wyjdzie. Wlasnie tu tkwi caly problem jak gg przechodzi przez serwer i laczy sie dokladnie zemna :)
Wlasnie tu tkwi caly problem jak gg przechodzi przez serwer i laczy sie dokladnie zemna :)
hehe :-D do tej pory to było dla mni oczywiste że jak się
nawiąże połąćzenie gniazdkowe z serverem to on może
swobodnie odpowiadać, ale prze ten topic zacząłęm mieć wątpliwości :-D
ciekawe... nie powiem, ktoś może to naświetlić od zaplecza technicznego [???] (po polsku) tak krok po kroku co się
dzieje z pakietami, i jeszcze ciekawi mnie dlaczego ClientSocket
może nawiązać połączenie zwrotne a jakiś NMStream, który zapewne
oparty jest na gtniazdach nie może [???]
wydaje mi sie ze moze troche uda mi sie wyjasnic
Np:
Klient ip w Lan 192.168.0.2 - bramka sieci 192.168.0.1=217.90.90.0 - publiczne
Server ip publiczne 217.100.150.1
// na poczatku wystepuje wymiana pakietow nie jawnych dla uzytkownika danego protokolu np HTTP - ponizszy przyklad jest bardzo uproszczony.
K = otwiera soket konekcji i wysyla pakiek ustanowienia polonczenia do serwera.
*S = odpowiada pakietem ze moze obsluzyc to polonczenie
k= wysyla pakiet o tym iz bedzie wysylal dane do serwera
s = potwierdza swoja gotowosc do obslugi tej transmisji
K = wysyla dane
K= skonczylem
S = potwierdzenie zakonczenia pobierania np crc przesylanych danych
odpowiedz serwera z * jest dla twojego pytania najwazniejsza to serwer otwiera gniazdko polonczeniowe dla danej konekcji i zostawia otwarte odpowiednio dlugi czas np FTp ma swoj timeout , gg chyba w ogóle nie ma wygasniecia sesji ale np Http prawie w ogóle nie dziala tym sposobem tu soket konekcji prawie zawsze Od razu po wykozystaniu jest zabijany w Http nie jest utrzymywane stale polonczenie .
To dla tego ze wlasnie serwer nie zwalnia gniazdka dla tego on samo moze w pewnych sytuacjiach zainnicjowac przesylanie danych do Ciebie i nie ma z tym problemu, reszta to juz zalezy od tabel routingu dla danego Ip publicznego.Pakiety przeznaczone dla danego Ip publicznego moga zawierac wewnatrz siebie identyfikator komputera z sieci lokalnej do jakiego maja zasoatc dostarczone - tu klania sie znajaomosc warstw sieci
Poleciam ksiazke "Pisanie programów internetowych" Andzeja Sopala - daje dobre podstawy i to w trzech jezykach C, Delphi i Java.
Mam nadzieje choc troche pomoglem
Pozdrawiam
Netdx