大牙牙53 2021-06-01 16:09 采纳率: 0%
浏览 65

利用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);
  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-18 10:52
    关注

    参考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();
        // 根据错误码进行处理
    }
    

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

    评论

报告相同问题?

悬赏问题

  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误