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

摘要:
几天前,我偶尔接到一个朋友的求助电话。我开始认为编写一个IPV6套接字程序很容易,因为套接字与IPV4和IPV6兼容。只需更改接口,然后……卡住……将参数修改为IPV6后,绑定中始终包含10049。根据MSDN,10049意味着找不到IP。但是当我的服务器绑定受监控的套接字时,这个问题应该不会发生……遍历没有结果,只有

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

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

然后....被卡住了....

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

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

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

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

        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成功...

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

免责声明:文章转载自《关于socket通信bind()返回值错误:10049》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java.net.UnknownHostException异常处理Jenkins:Linux下安装部署步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker daemon socket权限不足

一、概述 普通用户执行命令:docker ps报错,具体信息如下: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdock...

IPv6 ping命令

IPv6 ping命令 一、Linux操作系统 给一台 Linux 主机分配了一个 IPv6的 IP地址,如何使用 ping命令 确定该 IP地址 能否 ping 通呢? 1、查看主机的 IPv6 的 IP地址信息 命令如下: ip addr | grep net6  通过命令可以看到,该主机的 IPv6 的IP地址为:2408:877e:31::7...

响应式编程系列(一):什么是响应式编程?reactor入门

响应式编程 系列文章目录 (一)什么是响应式编程?reactor入门 (二)Flux入门学习:流的概念,特性和基本操作 (三)Flux深入学习:流的高级特性和进阶用法 (四)reactor-core响应式api如何测试和调试? (五)Spring reactive: Spring WebFlux的使用 (六)Spring reactive: webClie...

nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)错误解决办法

ginx: the configuration file /home/work/local-qc/nginx/conf/nginx.conf syntax is oknginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)nginx: configuration file /hom...

Go-kit介绍及构建微服务

Go-kit简介   Go-kit 并不是一个微服务框架,而是一套微服务工具集,我们可以用工具Go-kit为 Go 创建微服务,包含包和接口,有点类似于JAVA Spring Boot,但是没那么强大。可以利用Go-kit提供的API和规范可以创建健壮的,可维护性高的微服务体系,它提供了用于实现系统监控和弹性模式组件的库,例如日志记录、跟踪、限流和熔断等,...

Windows phone 8 学习笔记(3) 通信(转)

Windows phone 8 可利用的数据通信方式比较广泛,在硬件支持的前提下,我们可以利用WiFi、蓝牙、临近感应等多种方式。数据交互一般通过套接字来完成,我们将在本文详细的分析。 快速导航:一、WP8套接字二、蓝牙三、NFC四、获取网络状态五、访问web的几种方式 一、WP8套接字 1)创建套接字客户端 Windows phone 8中的套接字并...