getsockname
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