CAsyncSocket::SetSockOpt

BOOL SetSockOpt ( int nOptionName, Stała void * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );

Wartość zwracany

Niezerowa, jeśli funkcja jest skuteczne; w przeciwnym razie 0 i kod błędu mogą być pobierane przez wywołanie GetLastError. Następujące błędy stosuje się do tej funkcji członek:

Parametry

nOptionName

Opcja gniazda, dla którego wartość ma zostać utworzona.

lpOptionValue

Wskaźnik do buforu, w którym podano wartość dla żądanej opcji.

nOptionLen

Rozmiar buforu lpOptionValue w bajtach.

nLevel

Poziom, na którym zdefiniowano opcję; tylko poziomy obsługiwane są SOL_SOCKET i IPPROTO_TCP.

Uwagi

Wywołanie tej funkcji Państwa do ustawienia opcji gniazda. SetSockOpt Określa bieżącą wartość dla opcji gniazda skojarzone z gniazda dowolnego typu, w każdym Państwie. Chociaż opcje może istnieć na wielu poziomach protokołu, niniejszej specyfikacji tylko definiuje opcje, które istnieją na poziomie najwyższym "gniazd". Opcje wpływają na operacje gniazda, takich jak czy otrzymania przyspieszone dane w strumieniu normalnymi danymi, czy emitowane wiadomości mogą być wysyłane na gniazdo i tak dalej.

Istnieją dwa rodzaje gniazd opcje: Boolean opcje, które włączyć lub wyłączyć funkcję lub zachowanie i opcje, które wymagają wartość całkowitą lub struktury. Aby włączyć opcję typu Boolean, lpOptionValue wskazuje na niezerową liczbą całkowitą. Aby wyłączyć opcję punktów lpOptionValue na liczbę całkowitą równą zero. nOptionLen powinna być równa sizeof(BOOL) opcji typu Boolean. Inne opcje lpOptionValue wskazuje całkowitą lub struktury, zawierający żądaną wartość dla opcji i nOptionLen jest długością całkowitą lub struktury.

SO_LINGER kontroluje Akcja podejmowana, gdy niewysłanych danych znajduje się w kolejce na gnieździe i zamknąć gniazdo wywoływana jest funkcja Zamknij . Aby uzyskać więcej informacji, zobacz Windows Sockets programowania zagadnienia w dokumentacji zestawu Win32 SDK.

Domyślnie gniazdo nie można powiązać (patrz Bind) do lokalnego adresu, który jest już używany. Sporadycznie jednak może być pożądane dla "ponowne użycie" adres w ten sposób. Ponieważ każde połączenie jest unikatowo identyfikowana przez połączenie lokalne i zdalne adresy, nie istnieje żaden problem z o dwóch gniazdach powiązany z tym samym adresem lokalnym, tak długo, jak zdalne adresy są różne.

Poinformować implementacja Windows Sockets, że wywołanie powiązania na gnieździe nie powinny być zablokowane, ponieważ żądany adres jest już używany przez innego gniazda, stosowania należy ustawić opcję gniazda SO_REUSEADDR dla gniazda przed wydaniem wywołanie Bind . Uwaga interpretację opcję tylko w czasie wywołania powiązania : w związku z tym jest ona niepotrzebne (ale nieszkodliwe) ustawić opcję na gniazdo, które nie może być powiązany z istniejący adres i ustawienie lub zresetowania opcji po powiązać wywołanie ma nie wpływa na to lub każde inne gniazdo.

Aplikacja może zażądać, aby implementacja Windows Sockets umożliwia wykorzystanie "keep-alive" pakiety na połączenia hosta skryptów systemu Windows (TCP, Transmission Control Protocol) przez włączenie opcji gniazda SO_KEEPALIVE . (Uzyskać "keep-alive" pakietów, zobacz Windows Sockets programowania zagadnienia w dokumentacji zestawu Win32 SDK.) Implementacja Windows Sockets potrzebują nie obsługuje użycia utrzymywania: Jeśli nie, Dokładna semantyka są specyficzne dla realizacji, ale powinny być zgodne z ppkt 4.2.3.6 RFC 1122: „Requirements for Internet Hosts — warstwami komunikacyjnymi. " Jeśli połączenie zostało porzucone w wyniku "keep-alives" kod błędu WSAENETRESET jest zwrócony wszelkie wywołania w toku w gnieździe, oraz wszelkie kolejne wywołania nie powiedzie się z WSAENOTCONN.

Opcja TCP_NODELAY wyłącza Algorytm Nagle'a. Algorytm Nagle'a jest używany do zmniejszenia liczby małych pakiety wysłane przez hosta przez buforowanie niepotwierdzonych wysyłania danych, dopóki pakiet pełnowymiarowego mogą być wysyłane. Jednakże dla niektórych zastosowań tego algorytmu może utrudniać wydajności i TCP_NODELAY można ją wyłączyć. Autorzy aplikacji nie należy ustawić TCP_NODELAY , chyba że wpływ ten jest tak przejrzyste i potrzeb, ponieważ ustawienie TCP_NODELAY mogą mieć znaczący negatywny wpływ na wydajność sieci. TCP_NODELAY jest jedynym obsługiwanych opcji gniazda, która korzysta z poziomu IPPROTO_TCP; wszystkie inne opcje Użyj poziomu SOL_SOCKET.

Niektóre implementacje Windows Sockets dostaw wyjściowe informacje debugowania, jeśli wybrano opcję SO_DEBUG przez aplikację.

Następujące opcje są obsługiwane przez SetSockOpt. Typ identyfikuje typ danych, kierowane przez lpOptionValue.

Wartość Typ Znaczenie
SO_BROADCAST BOOL Zezwalaj na przekazywanie wiadomości emisji na gniazdo.
SO_DEBUG BOOL Rekord, informacje o debugowaniu.
SO_DONTLINGER BOOL Nie należy blokować ścisłej niewysłane dane do wysłania. Ustawienie tej opcji jest równoważne z ustawieniem SO_LINGER z l_onoff ustawiony na zero.
SO_DONTROUTE BOOL Nie trasy: Wyślij bezpośrednio do interfejsu.
SO_KEEPALIVE BOOL Wyślij utrzymywanie aktywności.
SO_LINGER struct LINGER Linger na bliskie , jeśli występuje niewysłanych danych.
SO_OOBINLINE BOOL Odbieranie danych z pozapasmowego w strumieniu danych normalne.
SO_RCVBUF int Określa, że rozmiar buforu dla otrzymuje.
SO_REUSEADDR BOOL Pozostawić gniazdo do zobowiązani do adresu, który jest już używany. (Zobacz Utwórz powiązanie).
SO_SNDBUF int Określ rozmiar buforu dla wysyła.
TCP_NODELAY BOOL Wyłącza Algorytm Nagle'a dla wysyłania on skupianiu.

Dostępne są opcje dystrybucji oprogramowania Berkeley (BSD) nie są obsługiwane dla SetSockOpt:

Wartość Typ Znaczenie
SO_ACCEPTCONN BOOL Nasłuchuje gniazda
SO_ERROR int Pobierz stan błędu i wyczyść.
SO_RCVLOWAT int Odbieranie znaku niskiej wody.
SO_RCVTIMEO int Odbieranie limit czasu
SO_SNDLOWAT int Wyślij znaku niskiej wody.
SO_SNDTIMEO int Limit czasu wysyłania.
SO_TYPE int Typ gniazda.
IP_OPTIONS Ustawianie opcji pola w nagłówku IP.

Omówienie CAsyncSocket |nbsp; Klasa członków | Wykres hierarchii

Zobacz też CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl

Index