WSASocket端API

来源:互联网 发布:roseonly和野兽派 知乎 编辑:程序博客网 时间:2024/04/28 16:50

创建一个与制定传送服务提供者绑定的套接口

此函数为socket()的扩展版本,其功能都是创建一个原始套接字。使用时需要包含
winsock2.h 头文件和链接ws2_32.lib库。

SOCKET WSASocket(  _In_ int                af,//地址族规范,目前仅支持AF_INET格式  _In_ int                type,//套接口类型,SOCK_STREAM:TCP  SOCK_DGRAM:UDP  _In_ int                protocol, //特定协议,若不愿指定协议,可以规定为0  _In_ LPWSAPROTOCOL_INFO lpProtocolInfo,  //指向结构的 指针,定义创建接口的特性,若非零,则前三个参数忽略。  _In_ GROUP              g,   //保留  _In_ DWORD              dwFlags  //套接口属性描述);
对应closesocket(...);

返回值:成功返回描述符参照;失败返回INVALID_SOCKET


WSAEVENT WSACreateEvent(void);
创建一个初始状态为失信的匿名的需要手动重置的事件对象

返回值:成功返回事件对象的句柄;失败返回WSA_INVALID_EVENT


int WSAEventSelect(  _In_ SOCKET   s,  _In_ WSAEVENT hEventObject,  _In_ long     lNetworkEvents);
//关联网络事件到事件句柄

其实调用该函数就是要告诉系统,如果有FD_ACCEPT事件发生的时候,就要让hWSAevent对象有信号。因为我们知道,一个事件对象有两种状态:有信号和无信号,而创建的时候默认的是无信号的,也是在无信号的情况下,我们的等待函数才会被阻塞(也就是为什么会采用该机制的原因了)。而当发生事件FD_ACCEPT(或其它如FD_READ、FD_WRITE、FD_CLOSE等)时让事件对象有信号,从而让等待函数被唤醒



让本地地址和socket相连接

int bind(  _In_ SOCKET                s,  _In_ const struct sockaddr *name,   //一个socket地址的结构体名,有sin_port  sin_family  sin_addr  _In_ int                   namelen 结构体名的长度,一般为sizeof());

返回失败的话为SOCKET_ERROR


listen是让一个置信的对象监听到来的连接

int listen(  _In_ SOCKET s,  _In_ int    backlog  //编译的最大长度连接);
返回失败的话也为SOCKET_ERROR

If no error occurs, listen returns zero. Otherwise, a value ofSOCKET_ERROR is returned, and a specific error code can be retrieved by callingWSAGetLastError.

                                             
0 0
原创粉丝点击