首先,讨论Create函数,分析socket句柄如何被创建并和CAsyncSocket对象关联。Create的实现如下:
BOOL CAsyncSocket::Create(UINT nSocketPort, int nSocketType,
long lEvent, LPCTSTR lpszSocketAddress)
{
if (Socket(nSocketType, lEvent))
{
if (Bind(nSocketPort,lpszSocketAddress))
return TRUE;
int nResult = GetLastError();
Close();
WSASetLastError(nResult);
}
return FALSE;
}
其中:
参数1表示本socket的端口,缺省是0,如果要创建数据报的socket,则必须指定一个端口号。
参数2表示本socket的类型,缺省是SOCK_STREAM,表示面向连接类型。
参数3是屏蔽位,表示希望对本socket监测的事件,缺省是FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE。
参数4表示本socket的IP地址字符串,缺省是NULL。
Create调用Socket函数创建一个socket,并把它捆绑在this所指对象上,监测指定的网络事件。参数2和3被传递给Socket函数,如果希望创建数据报的socket,不要使用缺省参数,指定参数2是SOCK_DGRM。
如果上一步骤成功,则调用bind给新的socket分配端口和IP地址。
CAsyncSocket 下的Create()函数
最新推荐文章于 2025-06-26 16:36:09 发布