Začínáme s Winsockem
Tato část je podrobný průvodce zahájením programování rozhraní Windows Sockets. Je navržená tak, aby poskytovala znalosti základních funkcí Winsock a datových struktur a jejich spolupráce.
Klientská a serverová aplikace, kterou v tomto tématu používáme pro ilustraci, je velmi základní klient a server. Pokročilejší příklady kódu jsou součástí ukázek, které jsou součástí sady Microsoft Windows Software Development Kit (SDK).
Několik prvních kroků je stejné pro klientské i serverové aplikace.
- O serverech a klientech
- Vytvoření základní aplikace Winsock
- inicializace rozhraní Winsock
Následující články popisují zbývající kroky pro vytvoření klientské aplikace Winsock.
- Vytvoření socketu pro klienta
- Připojení k soketu
- Odesílání a přijímání dat na klientovi
- Odpojení klienta
Následující články popisují zbývající kroky pro vytvoření serverové aplikace Winsock.
- Vytvoření socketu pro server
- Vytvoření vazby soketu
- Naslouchání na soketu
- Přijetí připojení
- příjem a odesílání dat na serveru
- Odpojení serveru
Kompletní zdrojový kód pro tyto základní příklady.
- spuštění ukázkového kódu klienta Winsock a serveru
- Kompletní klientský kód Winsock
- Dokončení kódu serveru Winsock
Pokročilé ukázkové aplikace Winsock
Několik pokročilejších klientských a serverových ukázkových aplikací Winsock, jsou k dispozici na GitHubu. Jsou zde uvedeny podle výkonu od vyššího k nižšímu, a nacházejí se v následujících adresářích:
iocp
Tato složka obsahuje tři ukázkové programy, které používají porty pro doplňování vstupně-výstupních operací. Mezi programy patří: server Winsock,
iocpserver
, který používá WSAAccept funkce; server Winsock,iocpserverex
, který používá funkci AcceptEx; a jednoduchý vícevláknový klient Winsock,iocpclient
, použitý k otestování některého z těchto serverů.Serverové programy podporují připojení více klientů pomocí protokolu TCP/IP a odesílání libovolných velikostí datových vyrovnávacích pamětí, které server potom vrátí zpět klientovi. Pro usnadnění byl vyvinut jednoduchý klientský program
iocpclient
, který se připojuje k serveru a neustále na něj odesílá data, aby ho zatížil pomocí více vláken. Servery winsock, které používají porty pro dokončování vstupně-výstupních operací, poskytují nejvyšší výkon.překrytí
Tato složka obsahuje ukázkový serverový program, který používá překrývající se vstupně-výstupní operace. Ukázkový program používá funkci AcceptEx a překrývající se vstupně-výstupní operace k efektivnímu zpracování více asynchronních žádostí o připojení z klientů. Server používá funkci AcceptEx pro multiplexování různých klientských připojení v jednovláknové aplikaci Win32. Použití překrývajících se vstupně-výstupních operací umožňuje větší škálovatelnost.
WSAPoll
Tato složka obsahuje základní ukázkový program, který ukazuje použití funkce WSAPoll. Kombinovaný klientský a serverový program nejsou blokující a používají funkci WSAPoll k určení, kdy je možné odesílat nebo přijímat bez blokování. Tato ukázka je určená pro ilustraci a nejedná se o vysoce výkonný server.
jednoduchý
Tato složka obsahuje tři základní ukázkové programy, které demonstrují použití více vláken serverem. Programy zahrnují: jednoduchý server TCP/UDP,
simples
; server pouze TCP,simples_ioctl
, který používá vybrat funkci v konzolové aplikaci Win32 pro podporu více požadavků klientů; a klientský program TCP/UDP,simplec
, pro testování serverů. Servery demonstrují použití více vláken ke zpracování více požadavků klientů. Tato metoda má problémy se škálovatelností, protože pro každý požadavek klienta se vytvoří samostatné vlákno.přijmout
Tato složka obsahuje základní ukázkový server a klientský program. Server ukazuje použití neblokujícího přijetí pomocí funkce select nebo asynchronního přijetí pomocí funkce WSAAsyncSelect. Tato ukázka je určená pro ilustraci a nejedná se o vysoce výkonný server.