Možnosti soketu SOL_SOCKET

Následující tabulky popisují možnosti SOL_SOCKET soketů. Další informace o získání a nastavení možností soketů najdete na referenčních stránkách k funkcím getsockopt a setsockopt .

K vytvoření výčtu protokolů a zjištění podporovaných vlastností pro každý nainstalovaný protokol použijte funkci WSAEnumProtocols, WSCEnumProtocols nebo WSCEnumProtocols32 .

Některé možnosti soketů vyžadují více vysvětlení, než tyto tabulky mohou sdělit; tyto možnosti obsahují odkazy na další stránky.

Note

Všechny možnosti soketů SOL_SOCKET platí stejně pro protokolY IPv4 a IPv6 (s výjimkou SO_BROADCAST, protože všesměrové vysílání není implementováno v protokolu IPv6).

 

Možnosti soketu SOL_SOCKET

Option Získat Nastavit Typ optval Description
PVD_CONFIG yes yes char [] Neprůspatný objekt datové struktury obsahující informace o konfiguraci pro poskytovatele služeb. Tato možnost je závislá na implementaci.
SO_ACCEPTCONN yes DWORD (logická hodnota) Vrátí, zda je soket v režimu naslouchání. Tato možnost je platná pouze pro protokoly orientované na připojení.
SO_BROADCAST yes yes DWORD (logická hodnota) Nakonfigurujte soket pro odesílání dat všesměrového vysílání. Tato možnost je platná pouze pro protokoly, které podporují vysílání (NAPŘÍKLAD IPX a UDP).
SO_BSP_STATE yes CSADDR_INFO Vrátí místní adresu, místní port, vzdálenou adresu, vzdálený port, typ soketu a protokol používaný soketem. Další informace najdete v referenčních informacích k SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT yes yes DWORD (logická hodnota) Označuje, jestli mají být příchozí připojení přijata nebo odmítnuta aplikací, nikoli zásobníkem protokolu. Další informace najdete v referenčních informacích k SO_CONDITIONAL_ACCEPT .
SO_CONNDATA yes yes char [] Další data, ne v normálním síťovém datovém proudu, která se odesílají se síťovými požadavky na navázání připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_CONNDATALEN yes DWORD Délka dodatečných dat v bajtech, ne v normálním síťovém datovém proudu, která se odesílá se síťovými požadavky na navázání připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_CONNECT_TIME yes DWORD Vrátí počet sekund připojení soketu. Tato možnost je platná pouze pro protokoly orientované na připojení.
SO_CONNOPT yes yes char [] Další data možností připojení, ne v normálním síťovém datovém proudu, která se odesílají se síťovými požadavky na navázání připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_CONNOPTLEN yes DWORD Délka dat možností připojení v bajtech, ne v normálním síťovém datovém proudu, která se odesílají se síťovými požadavky na navázání připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_DISCDATA yes yes char [] Další data, ne v normálním síťovém datovém proudu, která se odesílají se síťovými požadavky na odpojení připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_DISCDATALEN yes DWORD Délka dalších dat v bajtech, ne v normálním síťovém datovém proudu, která se odesílá se síťovými požadavky na odpojení připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_DISCOPT yes yes char [] Další data možností odpojení, ne v normálním síťovém datovém proudu, která se odesílají se síťovými požadavky na odpojení připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_DISCOPTLEN yes DWORD Délka dodatečných dat možností odpojení v bajtech, ne v normálním síťovém datovém proudu, která se odesílají síťovými požadavky na odpojení připojení. Tuto možnost používají starší protokoly, jako jsou DECNet, OSI TP4 a další. Tato možnost není v Windows podporována protokolem TCP/IP.
SO_DEBUG yes yes DWORD (logická hodnota) Povolte výstup ladění. Microsoft poskytovatelé momentálně nevypíše žádné ladicí informace.
SO_DONTLINGER yes yes DWORD (logická hodnota) Označuje stav l_onoff členu linger struktury přidružené k soketu. Pokud je tento člen nenulový, zůstane soket otevřený po určitou dobu po volání funkce closesocket , aby bylo možné odesílat data ve frontě. Tato možnost je platná pouze pro spolehlivé protokoly orientované na připojení.
SO_DONTROUTE yes yes DWORD (logická hodnota) Označuje, že odchozí data by se měla odesílat na libovolné rozhraní, na které je soket vázán, a ne na trasu v některém jiném rozhraní. Tato možnost je platná pouze pro protokoly orientované na zprávy. Microsoft poskytovatelé tuto možnost bezobslužně ignorují a vždy se obraťte na směrovací tabulku a vyhledejte odpovídající odchozí rozhraní.
SO_ERROR yes DWORD Vrátí poslední kód chyby v tomto soketu. Tento kód chyby jednotlivých soketů není vždy nastaven okamžitě.
SO_EXCLUSIVEADDRUSE yes yes DWORD (logická hodnota) Zabrání jakémukoli jinému soketu v vazbě na stejnou adresu a port. Tato možnost musí být nastavena před voláním funkce bind . Další informace najdete v referenčních informacích k SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID yes bezznaménkový int Tato možnost soketu je vyhrazená a neměla by se používat.
SO_GROUP_PRIORITY yes yes int Tato možnost soketu je vyhrazená a neměla by se používat.
SO_KEEPALIVE yes yes DWORD (logická hodnota) Umožňuje udržování naživu pro připojení soketu. Platné pouze pro protokoly, které podporují pojem udržování (protokoly orientované na připojení). U protokolu TCP je výchozí časový limit uchování 2 hodiny a interval udržování je 1 sekunda. Výchozí počet sond udržování se liší v závislosti na verzi Windows. Další informace najdete v referenčních informacích k SO_KEEPALIVE .
SO_LINGER yes yes linger struktury Označuje stav struktury přetrvání přidružené k soketu. Pokud je l_onoff člen linger struktury nenulový, zůstane soket otevřený po určitou dobu po volání funkce closesocket , aby bylo možné odesílat data ve frontě. Doba, po kterou v sekundách zůstane otevřená, je určena v l_linger členu lingerové struktury. Tato možnost je platná pouze pro spolehlivé protokoly orientované na připojení.
SO_MAX_MSG_SIZE yes DWORD Vrátí maximální velikost odchozí zprávy pro sokety orientované na zprávy podporované protokolem. Nemá žádný význam pro sokety orientované na stream.
SO_MAXDG yes DWORD Vrátí maximální velikost v bajtech pro odchozí datagramy podporované protokolem. Tato možnost soketu nemá žádný význam pro sokety orientované na stream.
SO_MAXPATHDG yes DWORD Vrátí maximální velikost v bajtech pro odchozí datagramy podporované protokolem na danou cílovou adresu. Tato možnost soketu nemá žádný význam pro sokety orientované na stream. Microsoft můžou poskytovatelé bezobslužné zacházení s tímto způsobem považovat za SO_MAXDG.
SO_OOBINLINE yes yes DWORD (logická hodnota) Označuje, že nevázaných dat by se měla vracet v souladu s běžnými daty. Tato možnost je platná pouze pro protokoly orientované na připojení, které podporují nesměrová data.
SO_OPENTYPE yes yes DWORD Po nastavení ovlivní, jestli se další vytvořené sokety nepřekrývají. Možné hodnoty této možnosti jsou SO_SYNCHRONOUS_ALERT a SO_SYNCHRONOUS_NONALERT. Tuto možnost byste neměli používat. Místo toho použijte funkci WSASocket a nechte WSA_FLAG_OVERLAPPED bit v parametru dwFlags vypnutý.
SO_PAUSE_ACCEPT yes yes DWORD(boolean) Tuto možnost použijte pro naslouchání soketů. Když je tato možnost nastavená, soket reaguje na všechna příchozí připojení pomocí protokolu RST a nepřijme je.
SO_PORT_SCALABILITY yes yes DWORD (logická hodnota) Umožňuje škálovatelnost místního portu pro soket tím, že umožňuje maximalizovat přidělení portů přidělením portů vícekrát přidělením portů se zástupnými adresou pro různé páry portů místních adres na místním počítači. Na platformách, kde jsou k dispozici obě možnosti, raději SO_REUSE_UNICASTPORT místo této možnosti. Další informace najdete v referenčních informacích k SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO yes WSAPROTOCOL_INFO Tato možnost je definována pro možnost SO_PROTOCOL_INFOW soketu, pokud je definováno makro UNICODE. Pokud není definováno makro UNICODE, je tato možnost definována pro možnost SO_PROTOCOL_INFOA soketu.
SO_PROTOCOL_INFOA yes WSAPROTOCOL_INFOA Vrátí strukturu WSAPROTOCOL_INFOA pro daný soket.
SO_PROTOCOL_INFOW yes WSAPROTOCOL_INFOW Vrátí WSAPROTOCOL_INFOW strukturu daného soketu.
SO_RANDOMIZE_PORT yes yes DWORD(boolean) Tato možnost by měla být nastavena na nevázaný soket. Při nastavení SO_RANDOMIZE_PORT a na soketu je vybraný dočasný port, je vázané náhodné číslo portu. Porty s automatickým opětovným použitím (vybrané porty pomocí SO_REUSE_UNICASTPORT) také randomizují vrácený port, takže pokud aplikace nastaví SO_REUSE_UNICASTPORT a pokusí se nastavit SO_RANDOMIZE_PORT, druhé volání setockopt selže.
SO_RCVBUF yes yes DWORD Celkový prostor vyrovnávací paměti pro jednotlivé sokety vyhrazený pro příjem. To nesouvisí s SO_MAX_MSG_SIZE a nemusí nutně odpovídat velikosti okna příjmu protokolu TCP.
SO_RCVLOWAT yes yes DWORD Možnost soketu z BSD UNIX, která je součástí zpětné kompatibility. Tato možnost nastaví minimální počet bajtů pro zpracování vstupních operací soketů. Tato možnost není podporována poskytovatelem Windows TCP/IP. Pokud se tato možnost použije u Windows Vista a později, funkce getsockopt a setsockopt selžou se službou WSAEINVAL. U starších verzí Windows tyto funkce selžou s WSAENOPROTOOPT.
SO_RCVTIMEO yes yes DWORD Časový limit v milisekundách pro blokování volání příjmu. Výchozí hodnota pro tuto možnost je nula, což značí, že operace příjmu nevysadí časový limit. Pokud vyprší časový limit blokujícího volání příjmu, připojení je v neurčitém stavu a mělo by být uzavřeno.
Pokud je soket vytvořen pomocí WSASocket funkce, dwFlags parametr musí mít nastavený atribut WSA_FLAG_OVERLAPPED, aby časový limit fungoval správně. Jinak se časový limit nikdy neprojeví.
SO_REUSEADDR yes yes DWORD (logická hodnota) Umožňuje soketu svázat s adresou a portem, které se už používají. Tato možnost SO_EXCLUSIVEADDRUSE může zabránit.
SO_REUSE_UNICASTPORT yes yes DWORD (logická hodnota) Při nastavení povolte dočasné použití portu pro funkce připojení rozhraní API winsock, které vyžadují explicitní vazbu, například ConnectEx. Všimněte si, že funkce připojení s implicitní vazbou (například připojení bez explicitní vazby) mají tuto možnost nastavenou ve výchozím nastavení. Tuto možnost použijte místo SO_PORT_SCALABILITY na platformách, kde jsou obě dostupné.
SO_REUSE_MULTICASTPORT yes DWORD Pokud je tato možnost nastavená na soketu, znamená to, že soket se nikdy nepoužije k příjmu paketů jednosměrového vysílání, a proto je možné jeho port sdílet s jinými aplikacemi jen pro vícesměrové vysílání. Nastavení hodnoty 1 umožňuje vždy sdílet provoz vícesměrového vysílání na portu. Nastavení hodnoty na 0 (výchozí) zakáže toto chování.
SO_SNDBUF yes yes DWORD Celkový prostor vyrovnávací paměti pro jednotlivé sokety vyhrazený pro odesílání. To nesouvisí s SO_MAX_MSG_SIZE a nemusí nutně odpovídat velikosti okna odeslání protokolu TCP.
SO_SNDLOWAT yes yes DWORD Možnost soketu z BSD UNIX, která je součástí zpětné kompatibility. Tato možnost nastaví minimální počet bajtů pro zpracování výstupních operací soketů. Tato možnost není podporována poskytovatelem Windows TCP/IP. Pokud se tato možnost použije u Windows Vista a později, funkce getsockopt a setsockopt selžou se službou WSAEINVAL. U starších verzí Windows tyto funkce selžou s WSAENOPROTOOPT.
SO_SNDTIMEO yes yes DWORD Časový limit v milisekundách pro blokování volání. Výchozí hodnota pro tuto možnost je nula, což značí, že operace odeslání nevysadí časový limit. Pokud vyprší časový limit blokujícího volání, připojení je v nedeterminátu a mělo by být uzavřeno.
Pokud je soket vytvořen pomocí WSASocket funkce, dwFlags parametr musí mít nastavený atribut WSA_FLAG_OVERLAPPED, aby časový limit fungoval správně. Jinak se časový limit nikdy neprojeví.
SO_TYPE yes DWORD Vrátí typ soketu pro daný soket (například SOCK_STREAM nebo SOCK_DGRAM).
SO_UPDATE_ACCEPT_CONTEXT yes DWORD (logická hodnota) Tato možnost se používá s funkcí AcceptEx . Tato možnost aktualizuje vlastnosti soketu, které jsou zděděné ze soketu naslouchání. Tato možnost by měla být nastavena, pokud mají být v akceptované soketu použity funkce getpeername, getockopt, getockopt nebo setsockopt.
SO_UPDATE_CONNECT_CONTEXT yes DWORD (logická hodnota) Tato možnost se používá s funkcemi ConnectEx, WSAConnectByList a WSAConnectByName . Tato možnost aktualizuje vlastnosti soketu po navázání připojení. Tato možnost by se měla nastavit, pokud se funkce getpeername, getockname, getockopt, setsockopt nebo shutdown mají používat na připojeném soketu.
SO_USELOOPBACK yes yes DWORD (logická hodnota) Při odesílání dat z tohoto soketu použijte adresu zpětné místní smyčky. Tato možnost by se měla použít jenom v případě, že se budou místně přijímat všechna odeslaná data. Tato možnost není podporována poskytovatelem Windows TCP/IP. Pokud se tato možnost použije u Windows Vista a později, funkce getsockopt a setsockopt selžou se službou WSAEINVAL. U starších verzí Windows tyto funkce selžou s WSAENOPROTOOPT.

podpora Windows možností SOL_SOCKET

Option Systém Windows 10 Windows 7 Systém Windows Server 2008 Windows Vista Systém Windows Server 2003 Windows XP Systém Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN yes yes yes yes yes yes yes yes yes
SO_BROADCAST yes yes yes yes yes yes yes yes yes
SO_BSP_STATE yes yes yes yes
SO_CONDITIONAL_ACCEPT yes yes yes yes yes yes yes
SO_CONNDATA yes yes yes yes yes yes yes yes
SO_CONNDATALEN yes yes yes yes yes yes yes yes
SO_CONNECT_TIME yes yes yes yes yes yes yes yes yes
SO_CONNOPT yes yes yes yes yes yes yes yes
SO_CONNOPTLEN yes yes yes yes yes yes yes yes
SO_DISCDATA yes yes yes yes yes yes yes yes
SO_DISCDATALEN yes yes yes yes yes yes yes yes
SO_DISCOPT yes yes yes yes yes yes yes yes
SO_DISCOPTLEN yes yes yes yes yes yes yes yes
SO_DEBUG yes yes yes yes yes yes yes yes yes
SO_DONTLINGER yes yes yes yes yes yes yes yes yes
SO_DONTROUTE yes yes yes yes yes yes yes yes yes
SO_ERROR yes yes yes yes yes yes yes yes yes
SO_EXCLUSIVEADDRUSE yes yes yes yes yes yes yes Ano SP4+
SO_GROUP_ID yes yes yes yes
SO_GROUP_PRIORITY yes yes yes yes
SO_KEEPALIVE yes yes yes yes yes yes yes yes yes
SO_LINGER yes yes yes yes yes yes yes yes yes
SO_MAX_MSG_SIZE yes yes yes yes yes yes yes yes yes
SO_MAXDG yes yes yes yes yes yes yes
SO_MAXPATHDG yes yes yes yes yes yes yes
SO_OOBINLINE yes yes yes yes yes yes yes yes yes
SO_OPENTYPE yes yes yes yes yes yes yes yes yes
SO_PORT_SCALABILITY yes yes yes
SO_PROTECT yes
SO_PROTOCOL_INFO yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOA yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOW yes yes yes yes yes yes yes yes yes
SO_RCVBUF yes yes yes yes yes yes yes yes yes
SO_RCVLOWAT
SO_RCVTIMEO yes yes yes yes yes yes yes yes yes
SO_RANDOMIZE_PORT yes yes yes yes
SO_REUSEADDR yes yes yes yes yes yes yes yes yes
SO_REUSE_UNICASTPORT yes
SO_REUSE_MULTICASTPORT yes
SO_SNDBUF yes yes yes yes yes yes yes yes yes
SO_SNDLOWAT
SO_SNDTIMEO yes yes yes yes yes yes yes yes yes
SO_TYPE yes yes yes yes yes yes yes yes yes
SO_UPDATE_ACCEPT_CONTEXT yes yes yes yes yes yes yes yes
SO_UPDATE_CONNECT_CONTEXT yes yes yes yes yes yes
SO_USELOOPBACK

Remarks

Možnosti SOL_SOCKET soketu jsou definovány v několika souborech hlaviček rozhraní Winsock:

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

V sadě Microsoft Windows Software Development Kit (SDK) vydané pro Windows Vista a později se organizace hlaviček souborů změnila a SOL_SOCKET úroveň je definována v souboru hlaviček Ws2def.h, který se automaticky zahrne do souboru hlaviček Winsock2.h. Některé možnosti soketu SOL_SOCKET jsou definovány v souborech hlaviček Winsock2.h a Mswsock.h . Zbývající SOL_SOCKET možnosti soketu jsou definovány v souboru záhlaví Ws2def.h , který je automaticky zahrnut do souboru záhlaví Winsock2.h . Ws2def.h by nikdy neměl být použit přímo.

Na platformě Software Development Kit (SDK) vydané pro Windows Server 2003 a Windows XP je úroveň SOL_SOCKET definována v souboru hlaviček Winsock2.h. Možnosti SOL_SOCKET soketu jsou definovány v souborech hlaviček Winsock2.h a Mswsock.h .

Requirements

Requirement Hodnota
Záhlaví
Winsock2.h;
Mswsock.h;
Ws2def.h (včetně rozhraní Winsock2.h)