getsockname  2NL2JUC

The Windows Sockets getsockname function gets the local name for a socket.

int getsockname (

    SOCKET s,

 

    struct sockaddr FAR*  name,

 

    int FAR*  namelen

 

   );

 

 

Parameters

s

[in] A descriptor identifying a bound socket.

name

[out] Receives the address (name) of the socket.

namelen

[out] The size of the name buffer.

 

Remarks

getsockname retrieves the current name for the specified socket descriptor in name. It is used on a bound and/or connected socket specified by the s parameter. The local association is returned. This call is especially useful when a connect call has been made without doing a bind first; this call provides the only means by which you can determine the local association which has been set by the system.

On return, the namelen argument contains the actual size of the name returned in bytes.

If a socket was bound to an unspecified address (for example, ADDR_ANY), indicating that any of the host's addresses within the specified address family should be used for the socket, getsockname will not necessarily return information about the host address, unless the socket has been connected with connect or accept. A Windows Sockets application must not assume that the address will be specified unless the socket is connected. This is because for a multihomed host the address that will be used for the socket is unknown unless the socket is connected.

Return Values

If no error occurs, getsockname returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.

Error Codes

WSANOTINITIALISED

A successful WSAStartup must occur before using this function.

WSAENETDOWN

The network subsystem has failed.

WSAEFAULT

The name or the namelen argument is not a valid part of the user address space, or the namelen argument is too small.

WSAEINPROGRESS

A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.

WSAENOTSOCK

The descriptor is not a socket.

WSAEINVAL

The socket has not been bound to an address with bind, or ADDR_ANY is specified in bind but connection has not yet occurs.

 

See Also

bind, getpeername, socket