SOL_SOCKET Socket-alternativ

I följande tabeller beskrivs alternativ för SOL_SOCKET socket. Se getsockopt och setsockopt funktionsreferenssidor för mer information om hur du hämtar och ställer in socketalternativ.

Om du vill räkna upp protokoll och identifiera egenskaper som stöds för varje installerat protokoll använder du funktionen WSAEnumProtocols, WSCEnumProtocolseller WSCEnumProtocols32.

Vissa socketalternativ kräver mer förklaring än vad dessa tabeller kan förmedla. sådana alternativ innehåller länkar till ytterligare sidor.

Note

Alla SOL_SOCKET socketalternativ gäller lika för IPv4 och IPv6 (förutom SO_BROADCAST, eftersom sändningen inte implementeras i IPv6).

 

SOL_SOCKET Socket-alternativ

Option Hämta Ställ in Optvaltyp Description
PVD_CONFIG yes yes char [] Ett ogenomskinliga datastrukturobjekt som innehåller konfigurationsinformation för tjänstleverantören. Det här alternativet är implementeringsberoende.
SO_ACCEPTCONN yes DWORD (booleskt) Returnerar om en socket är i lyssningsläge. Det här alternativet är endast giltigt för anslutningsorienterade protokoll.
SO_BROADCAST yes yes DWORD (booleskt) Konfigurera en socket för att skicka sändningsdata. Det här alternativet är endast giltigt för protokoll som stöder sändning (till exempel IPX och UDP).
SO_BSP_STATE yes CSADDR_INFO Returnerar den lokala adressen, den lokala porten, fjärradressen, fjärrporten, sockettypen och protokollet som används av en socket. Mer information finns i referensen för SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT yes yes DWORD (booleskt) Anger om inkommande anslutningar ska accepteras eller avvisas av programmet, inte av protokollstacken. Mer information finns i referensen för SO_CONDITIONAL_ACCEPT .
SO_CONNDATA yes yes char [] Ytterligare data, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden för att upprätta en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_CONNDATALEN yes DWORD Längden, i byte, på ytterligare data, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden för att upprätta en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_CONNECT_TIME yes DWORD Returnerar antalet sekunder som en socket har anslutits. Det här alternativet är endast giltigt för anslutningsorienterade protokoll.
SO_CONNOPT yes yes char [] Ytterligare anslutningsalternativdata, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden för att upprätta en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_CONNOPTLEN yes DWORD Längden, i byte, på anslutningsalternativdata, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden för att upprätta en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_DISCDATA yes yes char [] Ytterligare data, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden om att koppla från en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_DISCDATALEN yes DWORD Längden, i byte, på ytterligare data, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden om att koppla från en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_DISCOPT yes yes char [] Ytterligare alternativdata för frånkoppling, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden för att koppla från en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_DISCOPTLEN yes DWORD Längden, i byte, på ytterligare frånkopplingsalternativdata, inte i den normala nätverksdataströmmen, som skickas med nätverksbegäranden om att koppla från en anslutning. Det här alternativet används av äldre protokoll som DECNet, OSI TP4 och andra. Det här alternativet stöds inte av TCP/IP-protokollet i Windows.
SO_DEBUG yes yes DWORD (booleskt) Aktivera felsökningsutdata. Microsoft leverantörer matar för närvarande inte ut någon felsökningsinformation.
SO_DONTLINGER yes yes DWORD (booleskt) Anger tillståndet för l_onoff medlem i den dröjande struktur som är associerad med en socket. Om den här medlemmen inte är noll förblir en socket öppen under en angiven tid efter ett closesocket-funktionsanrop för att möjliggöra att köade data skickas. Det här alternativet är endast giltigt för tillförlitliga, anslutningsorienterade protokoll.
SO_DONTROUTE yes yes DWORD (booleskt) Anger att utgående data ska skickas på vilket gränssnitt socketen är bunden till och inte en dirigerad på något annat gränssnitt. Det här alternativet är endast giltigt för meddelandeorienterade protokoll. Microsoft leverantörer ignorerar det här alternativet tyst och läser alltid routningstabellen för att hitta rätt utgående gränssnitt.
SO_ERROR yes DWORD Returnerar den senaste felkoden på den här socketen. Den här felkoden per socket anges inte alltid omedelbart.
SO_EXCLUSIVEADDRUSE yes yes DWORD (booleskt) Förhindrar att andra socketar binds till samma adress och port. Det här alternativet måste anges innan bindningsfunktionen anropas. Mer information finns i referensen för SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID yes osignerad int Det här socketalternativet är reserverat och bör inte användas.
SO_GROUP_PRIORITY yes yes int Det här socketalternativet är reserverat och bör inte användas.
SO_KEEPALIVE yes yes DWORD (booleskt) Aktiverar keep-alive för en socketanslutning. Gäller endast för protokoll som stöder begreppet keep-alive (anslutningsorienterade protokoll). För TCP är standardtimeouten keep-alive 2 timmar och keep-alive-intervallet är 1 sekund. Standardantalet keep-alive-avsökningar varierar beroende på vilken version av Windows. Mer information finns i referensen för SO_KEEPALIVE .
SO_LINGER yes yes struct linger Anger tillståndet för den lingerstruktur som är associerad med en socket. Om den l_onoff medlemmen i lingerstrukturen inte är noll, förblir en socket öppen under en angiven tid efter ett closesocket-funktionsanrop för att aktivera köade data som ska skickas. Hur lång tid, i sekunder, för att förbli öppen anges i l_linger medlem i lingerstrukturen . Det här alternativet är endast giltigt för tillförlitliga, anslutningsorienterade protokoll.
SO_MAX_MSG_SIZE yes DWORD Returnerar den maximala utgående meddelandestorleken för meddelandeorienterade socketar som stöds av protokollet. Har ingen betydelse för strömorienterade socketar.
SO_MAXDG yes DWORD Returnerar den maximala storleken i byte för utgående datagram som stöds av protokollet. Det här socketalternativet har ingen betydelse för strömorienterade socketar.
SO_MAXPATHDG yes DWORD Returnerar den maximala storleken i byte för utgående datagram som stöds av protokollet till en viss måladress. Det här socketalternativet har ingen betydelse för strömorienterade socketar. Microsoft leverantörer kan tyst behandla detta som SO_MAXDG.
SO_OOBINLINE yes yes DWORD (booleskt) Anger att out-of-bound data ska returneras i linje med vanliga data. Det här alternativet är endast giltigt för anslutningsorienterade protokoll som stöder out-of-band-data.
SO_OPENTYPE yes yes DWORD När den har angetts påverkar det om efterföljande socketar som skapas inte överlappas. Möjliga värden för det här alternativet är SO_SYNCHRONOUS_ALERT och SO_SYNCHRONOUS_NONALERT. Det här alternativet bör inte användas. Använd i stället WSASocket-funktionen och lämna WSA_FLAG_OVERLAPPED biten i parametern dwFlags inaktiverad.
SO_PAUSE_ACCEPT yes yes DWORD(booleskt) Använd det här alternativet för lyssningsuttag. När alternativet är inställt svarar socketen på alla inkommande anslutningar med en RST i stället för att acceptera dem.
SO_PORT_SCALABILITY yes yes DWORD (booleskt) Möjliggör lokal portskalbarhet för en socket genom att tillåta att portallokeringen maximeras genom att jokerteckenportar allokeras flera gånger för olika lokala adressportpar på en lokal dator. På plattformar där båda alternativen är tillgängliga föredrar du SO_REUSE_UNICASTPORT i stället för det här alternativet. Mer information finns i referensen för SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO yes WSAPROTOCOL_INFO Det här alternativet definieras för alternativet SO_PROTOCOL_INFOW socket om UNICODE-makrot har definierats. Om UNICODE-makrot inte har definierats definieras det här alternativet för alternativet SO_PROTOCOL_INFOA socket.
SO_PROTOCOL_INFOA yes WSAPROTOCOL_INFOA Returnerar den WSAPROTOCOL_INFOA strukturen för den angivna socketen
SO_PROTOCOL_INFOW yes WSAPROTOCOL_INFOW Returnerar den WSAPROTOCOL_INFOW strukturen för den angivna socketen
SO_RANDOMIZE_PORT yes yes DWORD(booleskt) Det här alternativet bör anges på en obundet socket. När SO_RANDOMIZE_PORT anges och en tillfällig port väljs på socketen, är ett slumpmässigt portnummer bundet. Automatisk återanvändning av portar (portar som valts med SO_REUSE_UNICASTPORT) randomiserar också den returnerade porten, så om ett programuppsättningar SO_REUSE_UNICASTPORT och sedan försöker ange SO_RANDOMIZE_PORT misslyckas det andra setsockopt-anropet .
SO_RCVBUF yes yes DWORD Det totala buffertutrymmet per socket som reserverats för mottagningar. Detta är inte relaterat till SO_MAX_MSG_SIZE och motsvarar inte nödvändigtvis storleken på TCP-mottagningsfönstret.
SO_RCVLOWAT yes yes DWORD Ett socketalternativ från BSD UNIX ingår för bakåtkompatibilitet. Det här alternativet anger det minsta antal byte som ska bearbetas för socketindataåtgärder. Det här alternativet stöds inte av Windows TCP/IP-provider. Om det här alternativet används på Windows Vista och senare misslyckas funktionerna getsockopt och setsockopt med WSAEINVAL. I tidigare versioner av Windows misslyckas dessa funktioner med WSAENOPROTOOPT.
SO_RCVTIMEO yes yes DWORD Tidsgränsen, i millisekunder, för blockering av mottagningsanrop. Standardvärdet för det här alternativet är noll, vilket indikerar att en mottagningsåtgärd inte överskrider tidsgränsen. Om ett blockerande mottagningsanrop överskrider tidsgränsen är anslutningen i ett obestämt tillstånd och bör stängas.
Om socketen skapas med hjälp av funktionen WSASocket måste parametern dwFlags ha WSA_FLAG_OVERLAPPED-attributet inställt för att tidsgränsen ska fungera korrekt. Annars börjar tidsgränsen aldrig gälla.
SO_REUSEADDR yes yes DWORD (booleskt) Tillåter att en socket binder till en adress och port som redan används. Alternativet SO_EXCLUSIVEADDRUSE kan förhindra detta.
SO_REUSE_UNICASTPORT yes yes DWORD (booleskt) När det är inställt tillåter du tillfällig återanvändning av portar för Winsock API-anslutningsfunktioner som kräver en explicit bindning, till exempel ConnectEx. Observera att anslutningsfunktioner med en implicit bindning (till exempel ansluta utan explicit bindning) har det här alternativet inställt som standard. Använd det här alternativet i stället för att SO_PORT_SCALABILITY på plattformar där båda är tillgängliga.
SO_REUSE_MULTICASTPORT yes DWORD När det är inställt på en socket anger det här alternativet att socketen aldrig kommer att användas för att ta emot unicast-paket, och därmed att dess port kan delas med andra program med endast multicast. Om värdet anges till 1 kan du alltid dela multicast-trafik på porten. Om du anger värdet till 0 (standard) inaktiveras det här beteendet.
SO_SNDBUF yes yes DWORD Det totala buffertutrymmet per socket som reserverats för skickar. Detta är inte relaterat till SO_MAX_MSG_SIZE och motsvarar inte nödvändigtvis storleken på ett TCP-sändningsfönster.
SO_SNDLOWAT yes yes DWORD Ett socketalternativ från BSD UNIX ingår för bakåtkompatibilitet. Det här alternativet anger det minsta antal byte som ska bearbetas för socketutdataåtgärder. Det här alternativet stöds inte av Windows TCP/IP-provider. Om det här alternativet används på Windows Vista och senare misslyckas funktionerna getsockopt och setsockopt med WSAEINVAL. I tidigare versioner av Windows misslyckas dessa funktioner med WSAENOPROTOOPT.
SO_SNDTIMEO yes yes DWORD Tidsgränsen, i millisekunder, för blockering av sändningsanrop. Standardvärdet för det här alternativet är noll, vilket indikerar att en sändningsåtgärd inte överskrider tidsgränsen. Om ett blockerande sändningsanrop överskrider tidsgränsen är anslutningen i ett obestämd tillstånd och bör stängas.
Om socketen skapas med hjälp av funktionen WSASocket måste parametern dwFlags ha WSA_FLAG_OVERLAPPED-attributet inställt för att tidsgränsen ska fungera korrekt. Annars börjar tidsgränsen aldrig gälla.
SO_TYPE yes DWORD Returnerar sockettypen för den angivna socketen (till exempel SOCK_STREAM eller SOCK_DGRAM).
SO_UPDATE_ACCEPT_CONTEXT yes DWORD (booleskt) Det här alternativet används med funktionen AcceptEx . Det här alternativet uppdaterar egenskaperna för socketen som ärvs från lyssningsuttaget. Det här alternativet bör anges om funktionerna getpeername, getsockname, getsockopt eller setsockopt ska användas på den godkända socketen.
SO_UPDATE_CONNECT_CONTEXT yes DWORD (booleskt) Det här alternativet används med funktionerna ConnectEx, WSAConnectByList och WSAConnectByName . Det här alternativet uppdaterar egenskaperna för socketen när anslutningen har upprättats. Det här alternativet bör anges om funktionerna getpeername, getockname, getsockopt, setsockopt eller shutdown ska användas på den anslutna socketen.
SO_USELOOPBACK yes yes DWORD (booleskt) Använd den lokala loopback-adressen när du skickar data från den här socketen. Det här alternativet bör endast användas när alla data som skickas också tas emot lokalt. Det här alternativet stöds inte av Windows TCP/IP-provider. Om det här alternativet används på Windows Vista och senare misslyckas funktionerna getsockopt och setsockopt med WSAEINVAL. I tidigare versioner av Windows misslyckas dessa funktioner med WSAENOPROTOOPT.

Windows stöd för SOL_SOCKET alternativ

Option Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP 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 Ja 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

Alternativen för SOL_SOCKET socket definieras i flera Winsock-huvudfiler:

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

På Microsoft Windows Software Development Kit (SDK) som släpptes för Windows Vista och senare har organisationen av huvudfiler ändrats och SOL_SOCKET nivå definieras i rubrikfilen Ws2def.h som automatiskt ingår i winsock2.h-huvudfilen. Några av de SOL_SOCKET socketalternativen definieras i huvudfilerna Winsock2.h och Mswsock.h . De återstående SOL_SOCKET socketalternativen definieras i rubrikfilen Ws2def.h som automatiskt ingår i sidhuvudfilen Winsock2.h . Ws2def.h ska aldrig användas direkt.

På Platform Software Development Kit (SDK) som släpptes för Windows Server 2003 och Windows XP definieras den SOL_SOCKET nivån i winsock2.h-huvudfilen. Alternativen SOL_SOCKET socket definieras i huvudfilerna Winsock2.h och Mswsock.h .

Requirements

Requirement Värde
Sidhuvud
Winsock2.h;
Mswsock.h;
Ws2def.h (inklusive Winsock2.h)