Some basic socket functions

来源:互联网 发布:js style.border 编辑:程序博客网 时间:2024/06/10 07:13

1.      WSAStartup(), WSACleanup()

int PASCAL WSAStartup(WORD,LPWSADATA);

int PASCAL WSACleanup(void);

You should only need to call these functions once each, the former when you initialize Winsock, and the latter when you are finished.

An application must call one WSACleanup call for every successful WSAStartup call to allow third-party DLLs to make use of a WS2_32.DLL on behalf of an application.

 

2.      bind()

For TCP/IP, if the port is specified as zero, the service provider assigns a unique port to the application with a value between 1024 and 5000.

The application can use getsockname() after calling bind to learn the address and the port that has been assigned to it.

If the Internet address is equal to INADDR_ANY, we dont call getsockname.

Binding to a specific port number other than port 0 is discouraged for client applications, since there is a danger of conflicting with another socket already using that port number.

 

3.      connect()

It can be used in both mode stream and data gram. Faint.

For a connectionless socket (for example, type SOCK_DGRAM), the operation performed by connect is merely to establish a default destination address that can be used on subsequent send/WSASend and recv/WSARecv calls. Any datagrams received from an address other than the destination address specified will be discarded.

 

4.      WSARecvFrom()

if LPWSAOVERLAPPED lpOverlapped is NULL, then the function act as a blocking mode asynchronous function; while if WSAOVERLAPPED is set, the function return immediately, if no error happen, and with an return value of ERROR_IO_PENDING, then we may wait for the event set in overlapped.