利用CAsyncSocket::Create建立一个socket时总会创建失败

在MFC中使用Create建立一个socket,生成的.exe文件运行时,如果开启一个,另一个开启后会报错,查程序这里的falg是false这意味着socket无法建立成功,我将AF_INET改为0,就不会出现端口冲突,想问大神们这是因为AF_INET这个域组的问题吗

主要程序如下:

CAsyncSocket m_SendSocket;
bool flag = false;
flag =  m_SendSocket.Create(AF_INET,SOCK_DGRAM,0);

 

参考GPT和自己的思路:

首先,关于您的问题,AF_INET是IPV4协议族,代表使用IPV4地址。根据您所描述的情况,可能是因为IPV4地址的限制导致了您的问题。

其次,您可以尝试使用SO_REUSEADDR选项来解决端口冲突问题。这个选项可以让您的socket绑定在一个已经被占用的端口上。请看下面的代码:

m_SendSocket.SetSockOpt(SO_REUSEADDR, &optval, sizeof(optval), SOL_SOCKET);

其中,optval是一个bool型变量,表示是否打开这个选项。

最后,您也可以考虑使用SOCKET_ERROR和WSAGetLastError来检测Create函数是否失败,并查找问题所在。具体的代码:

if(m_SendSocket.Create(AF_INET, SOCK_DGRAM, 0) == SOCKET_ERROR) {
    int error = WSAGetLastError();
    // 根据错误码进行处理
}

希望我的回答能够帮助到您。