Je možné na jednom serverovom sokete (jeden TCP/IP port) mať otvorených viacero spojení (každé v jednom threade), alebo je možné v danom čase len jedno (t.j. pre obslúženie 2. pripojenia je potrebné najskôr ukončiť 1.) ??
Fórum › C / C++
Sokety
Samozrejme ze to jde.Bez toho by nemohly existovat multiplayerove hry tak,jak je zname dneska :)
Konkretne to funguje tak,ze v main threadu mas kod,ktery zachytava prichozi spojeni a predava je nove vytvarenym vlaknum k jejich obsluze.
hmm predpokladal som
ako to ale funguje? Spojenie TCP/IP identifikuje (podľa knihy ktorú som čítal) IP oboch účastníkov spojenia a port (klienta aj servera). Pokiaľ je ale možne mať v jednom čase na jednom porte viacero spojení musí OS tieto spojenia ešte podla niečoho rozoznávať (resp. samotné pakety musia niesť nejakým spôsobom informáciu o tom ktorému konkrétnemu spojeniu patria). Vie mi prosím Vás niekto ozrejmiť ako to funguje (čo som nepochopil/prehliadol??)
Koukej,u serverove casti je vetsinou nejaka metoda podobna tehle "server_accept()".Ta ma nejake parametry a uklada nejaky identifikator spojeni.Tento identifikator pak dale predavas do metody,ktera zpracovava dane pripojeni ve svem threadu.Samozrejme,ze OS si vsechno ridi a prepina a vetsinou uz tohle nemusis resit.Kazdy packet co putuje po internetu (tcp/ip/udp) s sebou nese nejaka data o prijemci a odesilateli.Ty se pak pouzivaj pri spojeni.
Ok dík
no ja používam istý c++ framework ktorý TCP/IP implementuje objektovo t.j. mam nejaku server triedu ta ma metodu accept ktora vytvori novy objekt typu connection (ktory predstavuje jedno spojenie). Akurat to prerabam tak aby sa kazde spojenie predalo novemu vlaknu ktoré bude mať na starosti komunikáciu s klientom a uzavretie spojenia (Doteraz som mal len jedno UI vlakno a jedno vlakno ktore v cykle bralo pripojenia po jednom). Len som chcel vediet ci tato implementacia je mozna t.j. ci je mozne na jednom porte mat otvorenych viac spojeni, kedze som si tym na zaklade mojich nie celkom idealnych vedomostiach o TCP/IP mal jasno, ale teraz uz viem ze ano (este raz dik).
Cielom mojho druheo prispevku teda nebolo, "ako na to", ale ako je to zhruba implementovane na urovni OS a samotneho TCP/IP, kedze pri mojom studiu som si nejaku takuto "fintu" nevsimol a rad by som to vedel (lepsie tomu rozumel, nerad totiz robim z vecami ktorím nerozumiem). Kazdopadne dik teraz tomu uz chapem
Není zač.Zkus se podivat po nejakych informacich o tcp/ip,jak vypada struktura apod.Pak se muzes podivat na model ISO-OSI,ktery ukazuje 7 vrstev systemu a jejich praci.To by ti taky mohlo pomoct neco pochopit.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze