Udostępnij za pośrednictwem


Wprowadzenie do usługi Winsock

Ta sekcja jest przewodnikiem krok po kroku dotyczącym rozpoczynania pracy z programowaniem windows Sockets. Jest ona przeznaczona do zapewnienia zrozumienia podstawowych funkcji i struktur danych Winsock oraz sposobu ich współpracy.

Aplikacja kliencka i serwerowa używana w tym temacie na potrzeby ilustracji jest bardzo podstawowym klientem i serwerem. Bardziej zaawansowane przykłady kodu znajdują się w przykładach dołączonych do zestawu Microsoft Windows Software Development Kit (SDK).

Pierwsze kroki są takie same zarówno w przypadku aplikacji klienckich, jak i serwerowych.

W poniższych artykułach opisano pozostałe kroki tworzenia aplikacji klienckiej Winsock.

W poniższych artykułach opisano pozostałe kroki tworzenia aplikacji serwera Winsock.

Kompletny kod źródłowy dla tych podstawowych przykładów.

Zaawansowane przykładowe aplikacje Winsock

Kilka bardziej zaawansowanych przykładowych aplikacji klienta i serwera Winsock jest dostępnych na GitHub. Są one wymienione tutaj w kolejności od wyższej do niższej wydajności i znajdują się w następujących katalogach:

  • iocp

    Ten folder zawiera trzy przykładowe programy korzystające z portów uzupełniania we/wy. Programy obejmują: serwer Winsock, iocpserver, który używa funkcji WSAAccept; serwer Winsock, iocpserverex, który używa funkcji AcceptEx; oraz prosty, wielowątkowy klient Winsock, iocpclient, używany do testowania jednego z tych serwerów.

    Programy serwera obsługują wielu klientów łączących się przy użyciu protokołu TCP/IP oraz wysyłających bufory danych o dowolnym rozmiarze, które następnie serwer wysyła z powrotem do klienta. Dla wygody prosty program kliencki, iocpclient, został opracowany w celu nawiązania połączenia i ciągłego wysyłania danych do serwera w celu przeciążania go przy użyciu wielu wątków. Serwery Winsock korzystające z portów uzupełniania we/wy zapewniają najwyższą wydajność.

  • nakładać się

    Ten folder zawiera przykładowy program serwera, który używa nakładających się operacji we/wy. Przykładowy program używa funkcji AcceptEx i nakładających się operacji we/wy w celu efektywnego obsługi wielu asynchronicznych żądań połączeń od klientów. Serwer używa funkcji AcceptEx do multipleksowania różnych połączeń klienckich w jednowątkowym aplikacji Win32. Użycie nakładających się operacji wejścia/wyjścia umożliwia większą skalowalność.

  • WSAPoll

    Ten folder zawiera podstawowy przykładowy program, który demonstruje użycie funkcji WSAPoll. Połączony program klienta i serwera nie blokuje i użyj funkcji WSAPoll, aby określić, kiedy można wysyłać lub odbierać bez blokowania. Ten przykład jest przeznaczony do ilustracji i nie jest serwerem o wysokiej wydajności.

  • prosty

    Ten folder zawiera trzy podstawowe przykładowe programy, które pokazują użycie wielu wątków przez serwer. Programy obejmują: prosty serwer TCP/UDP, simples; serwer tylko tcp, simples_ioctl, który używa wybrać funkcji w aplikacji konsolowej Win32 do obsługi wielu żądań klientów; program TCP/UDP klienta, simplec, na potrzeby testowania serwerów. Serwery pokazują użycie wielu wątków do obsługi wielu żądań klientów. Ta metoda ma problemy ze skalowalnością, ponieważ dla każdego żądania klienta jest tworzony oddzielny wątek.

  • akceptować

    Ten folder zawiera podstawowy przykładowy serwer i program kliencki. Serwer demonstruje użycie akceptowania bez blokowania przy użyciu funkcji select lub asynchronicznej akceptacji przy użyciu funkcji WSAAsyncSelect. Ten przykład jest przeznaczony do ilustracji i nie jest serwerem o wysokiej wydajności.