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 don’t 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.
本文介绍了Winsock编程的基础函数,包括WSAStartup()和WSACleanup()的初始化与清理过程;bind()函数中如何指定端口及获取已分配的端口信息;connect()函数在流式与数据报模式下的应用,以及其对于默认目的地址的设定;最后探讨了WSARecvFrom()函数的同步与异步工作模式。
930

被折叠的 条评论
为什么被折叠?



