Doporucuju se kouknout na nejake kratke pokusne ukazky server-klient aplikaci ... a poradne si prohlednout parametry socketu behem a po prijmuti spojeni. Tam bude dobre videt jak se to chova, jake to bude mit okamzite parametry atd atd. Vesmes se to muze chovat takhle ... Otevres socket na nejakem portu a poslouchas (otazka par radku). Socket ceka az prijde nejake spojeni (tedy nejdrive dojde na Listen a pak Accept) a kdyz prijde, udela mitozu - tedy udela svuj klon a tomu preda rizeni toho otevreneho spojeni. To se deje vesmes automaticky.
Dim mySocket As Socket = listeningSocket.Accept()
Tady je primo videt, ze produktem (navratovou hodnotou) funkce Accept je nejaky "novy" socket. Tenhle socket bude mit na starost nove vytvorene spojeni a soucasne nebude blokovat ten listen socket na danem portu (1234 muze byt dale pouzivane pro prijem). Coz rovnou i napovida, ze ta implementace to dela automaticky - vesmes neni poterba extra resit. Jinak jeste pro informaci, funkce Accept vybere jedno prichozi/cekajici spojeni z FRONTY a prijme ho ... to napovida, ze tedy na jednom portu lze prijmout vice spojeni a taky to, ze accept je poterba volat opakovane (smycka). Z pohledu klienta (toho co se pripojuje) nic resit neni poterba. Na jeho strane je to transparentni vecicka. Pripojuje se na jeden port ... a jak to komunikuje pote je dost jedno - hlavne ze to komunikuje UDP ...neni nic jako UDP spojeni, bacha na to. UDP taky nezarucuje doruceni a spravne poradi. Tedy aby byl takovy protokol korektni, je potreba nejako potvrzovat (aby se zajistilo, ze se kusy komunikce neztraceji - ok pro LAN by to nemelo zase az tak hrozit), ze packety dosli a nejako je cislovat (na tohle zase existuje tuna postupu). Ja bych samotnou komunikaci na UDP nedaval, zustal bych u primeho spojeni pomoci TCP (at uz pomoci serveru ci P2P). Jakmile mas sever, se kterym udrzujes jedno TCP spojeni z kazdeho klienta, neni treba zadne UDP hledani, zadne broadcasty, vsechny zpravy at ty "textove" nebo "provozni" protlacis skrze to jedno spojeni a je to. Takhle to ostatne dela treba ICQ. Narocnost neni tak hrozna dokud clovek neudela nejakou botu - stovku vzajemne hovoricich klientu jde obslouzit docela dobre, protoze jde o malicke textove zpravy, ktere chodi v relativne dlouhych prodlevach .... Snad sem to moc nezamotal ... pokud ano, zkusim konkretneji popsat ruzne casti ...
|