在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);
在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();
// 根据错误码进行处理
}
希望我的回答能够帮助到您。