关于socket通信bind()返回值错误:10049 您所在的位置:网站首页 猎人大师报错10049 关于socket通信bind()返回值错误:10049

关于socket通信bind()返回值错误:10049

2024-07-14 00:45| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

前几天偶尔收到一个朋友的求救,要编写一个IPV6的socket编程

开始以为这个问题很容易,因为socket已经兼容IPV4和IPV6的,改下那几个接口就可以了

然后….被卡住了….

修改了参数为IPV6的参数以后,在bind的时候始终包10049错误.

按照MSDN的说法,10049的意思表示找不到那个IP.

但是我服务器端bind监听的socket的时候,是不应该出这个问题的…

遍历无果,只能通过检视代码来找可能的错误.

代码语言:javascript复制 CString strError; m_hSocket; sockaddr_in6 addr; addr.sin6_family=AF_INET6;//表示在INT上通信 addr.sin6_addr =in6addr_any; //inet_pton(AF_INET6,DEFAULT_IP,&addr.sin6_addr); addr.sin6_port=htons(8000); int ret=0; int error=0; ret=bind(m_hSocket,(struct sockaddr *)&addr,sizeof(struct sockaddr_in6));//绑定 if(ret==SOCKET_ERROR) { strError.Format("绑定失败:%d ",error=WSAGetLastError()); pDlg->MessageBox(strError,"错误",MB_ICONSTOP); closesocket(m_hSocket); return; }

检视的过程中发现,排除socket的配置错误,唯一一个可能的地方

定义sockaddr_in6 结构体的时候没有初始化…

因此加了一句 memset(&addr, 0, sizeof(addr));

重新试了下,bind成功…

这个事情告诉我们,一定要遵守编程规范….

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155520.html原文链接:https://javaforall.cn



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有