C++ / winsock.h - Serwer wielu klientów TCP i UDP


(Kubus Witkacy) #1

Witam. Nauczyłem się tworzyć aplikację klient-serwer, która przesyła wiadomość składającą się z paru wyrazów ale dla jednego klienta. Proszę o radę:

  • z jakich funkcji skorzystać aby do serwera mogło się podłączyć jednocześnie kilku klientów?

  • (w przypadku serwera udp) w jaki sposób zapewnić obsługę zagubionych datagramów oraz podział danych w przypadku przekroczenia maksymalnego rozmiaru datagramu?

P.S. Google'owałem i znalazłem przykłady ale w owych przykładach wykorzystano winapi. Ja chciałbym się ograniczyć do biblioteki winsock.h, ewentualnie winsock2.h.


(Wojtekbogocki) #2

Winsock2 to nowsza wersja Winsock.

http://firsthost.nazwa.pl/wordpress/socket-tutorial - to raz.

http://msdn.microsoft.com/en-us/library/ms741416(v=vs.85).aspx - to dwa

http://www.google.com - to trzy

Va fail Kubus_Witkacy :slight_smile:


(Fiołek) #3

No jakby nie patrzeć, WinSock2 można uznać za część Windows API :wink:

1) Non-blocking sockets albo asynchronous sockets. Przy użyciu pierwszego nie ma problemu z synchronizacją między wątkami, drugi jest ciut wydajniejszy(więcej wątków). Poczytaj, pogooglaj. Dla non-blocking: select, WSAEventSelect(bardziej "przyjazne" jak dla mnie).