Description
Retrieve a socket option.
#include <winsock.h>
int PASCAL FAR getsockopt ( SOCKET s, int level, int optname, char FAR * optval, int FAR * optlen);
s
Remarks
getsockopt() retrieves the current value for a socket option associated with a socket of any type, in any state, and stores the result in optval. Options may exist at multiple protocol levels, but they are always present at the uppermost "socket" level. Options affect socket operations, such as whether an operation blocks or not, the routing of packets, out-of-band data transfer, etc. The value associated with the selected option is returned in the buffer optval. The integer pointed to by optlen should originally contain the size of this buffer; on return, it will be set to the size of the value returned. For SO_LINGER, this will be the size of a struct linger; for all other options it will be the size of an integer.
If the option was never set with setsockopt(), then getsockopt() returns the default value for the option.
The following options are supported for getsockopt(). The Type identifies the type of data addressed by optval. The TCP_NODELAY option uses level IPPROTO_TCP, all other options use level SOL_SOCKET.
Value             Type            Meaning--------------- --------------- -----------------------------------------------
SO_ACCEPTCONN   BOOL            Socket is listen()ing.
SO_BROADCAST    BOOL            Socket is configured for the transmission of
                                broadcast messages.
SO_DEBUG        BOOL            Debugging is enabled.
SO_DONTLINGER   BOOL            If true, the SO_LINGER option is disabled..
SO_DONTROUTE    BOOL            Routing is disabled.
SO_ERROR        int             Retrieve error status and clear.
SO_KEEPALIVE    BOOL            Keepalives are being sent.
SO_LINGER       struct linger   Returns the current linger options.
                FAR *
SO_OOBINLINE    BOOL            Out-of-band data is being received in the
                                normal data stream.
SO_RCVBUF       int             Buffer size for receives
SO_REUSEADDR    BOOL            The socket may be bound to an address which
                                is already in use.
SO_SNDBUF       int             Buffer size for sends
SO_TYPE         int             The type of the socket (e.g. SOCK_STREAM).
TCP_NODELAY     BOOL            Disables the Nagle algorithm for send
                                coalescing.
BSD options not supported for getsockopt() are:
Value Type Meaning --------------- --------------- ----------------------------------------------- SO_RCVLOWAT int Receive low water mark SO_RCVTIMEO int Receive timeout SO_SNDLOWAT int Send low water mark SO_SNDTIMEO int Send timeout IP_OPTIONS Get options in IP header. TCP_MAXSEG int Get TCP maximum segment size.
Calling getsockopt() with an unsupported option will result in an error code of WSAENOPROTOOPT being returned from WSAGetLastError().
Return Value
If no error occurs, getsockopt() returns 0. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code may be retrieved by calling WSAGetLastError().
Error Codes
WSANOTINITIALISED
See Also
setsockopt(), WSAAsyncSelect(), socket()