CAsyncSocket::Create()

本文详细介绍了CAsyncSocket类中的Create方法,包括其参数说明及返回值解释,并提供了初始化示例代码。阐述了如何通过设置不同的参数来创建不同类型的socket,并监听特定的网络事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Create()
BOOL Create(
    UINT nSocketPort = 0,  
    int nSocketType = SOCK_STREAM,  
    long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,  
    LPCTSTR lpszSocketAddress = NULL);

if (Socket(nSocketType, lEvent)) 

if (Bind(nSocketPort,lpszSocketAddress)) 
return TRUE; 
int nResult = GetLastError(); 
Close(); 
WSASetLastError(nResult); 

return FALSE; 
其中: 
参数1表示本socket的端口,缺省是0,如果要创建数据报的socket,则必须指定一个端口号。( 在C/S模型中,客户端端口一般缺省,服务器端口固定
参数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地址。
参数

nSocketPort
如果您希望 Windows 套接字选择的端口套接字或 0 开头使用众所周知的端口。

nSocketType
SOCK_STREAM或SOCK_DGRAM。

lEvent
位掩码,它指定在其中应用程序感兴趣的网络事件的组合。

  • FD_READ想要接收通知的准备工作以进行读取。触发对方OnReceive()

  • FD_WRITE想要接收通知的准备工作以进行写入。触发OnSend()

  • FD_OOB想要接收通知的带外数据的到达。

  • FD_ACCEPT想要接收通知的传入连接。

  • FD_CONNECT想要接收通知的已完成的连接。

  • FD_CLOSE想要接收通知的套接字关闭。

lpszSockAddress
指向一个包含连接的套接字,一个以点分隔的数字,如"128.56.22.8"的网络地址的字符串的指针。传递NULL字符串为此参数指示CAsyncSocket实例应侦听的所有网络接口上的客户端活动。

返回值

如果该函数成功,则非零值否则为 0 和特定错误代码可以检索通过调用GetLastError。 以下错误适用于该成员函数︰

在对话初始化中
BOOL CClientDlg::OnInitDialog()加入下列代码:
{
if (!AfxSocketInit())
 {
  AfxMessageBox("套接字初始化失败!");
  return FALSE;
 }
}

用于初始化Scoket套接字,不然Create()会失败!
  • WSANOTINITIALISED成功AfxSocketInit使用此 API 之前必须发生。:

  • WSAENETDOWN Windows 套接字实现检测到的网络子系统失败。

  • WSAEAFNOSUPPORT不支持指定的地址族。

  • 返回 WSAEINPROGRESS正在阻塞的 Windows 套接字操作。

  • WSAEMFILE没有更多的文件描述符。

  • WSAENOBUFS没有缓冲区空间不可用。 无法创建套接字。

  • WSAEPROTONOSUPPORT不支持指定的端口。

  • WSAEPROTOTYPE指定的端口是此套接字错误的类型。

  • WSAESOCKTNOSUPPORT指定套接字类型不支持此地址族中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值