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

关于socket通信bind()返回值错误:10049前几天偶尔收到一个朋友的求救,要编写一个IPV6的socket编程开始以为这个问题很容易,因为socket已经兼容IPV4和IPV6的,改下那几个接口就可以了然后….被卡住了….修改了参

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

前几天偶尔收到一个朋友的求救,要编写一个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成功…

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • laravel安装intervention/image图像处理扩展 报错 intervention/image 2.3.7 requires ext-fileinfo…

    laravel安装intervention/image图像处理扩展 报错 intervention/image 2.3.7 requires ext-fileinfo…

    2021年10月21日
    43
  • fvwm配置_nvme ngff

    fvwm配置_nvme ngff  习惯了Gnome与KDE的生活,是不是有时候也觉得太过于繁琐?花了几天时间,终于配置好了我的FVWM………… 正如王垠博士说的那样   无比强大!!!!!体验了  自己操控电脑的感觉啊还是那句话,在Linux的世界里,我就是上帝!有需求的人,我们一起探讨一下配置哈! 下面贴我的配置文件:####添加图标路径##########ImagePath/hom

    2022年10月3日
    0
  • DB9 公头母头引脚定义及连接

    DB9 公头母头引脚定义及连接

    2021年8月30日
    81
  • acwing1068. 环形石子合并(区间dp+前缀和)「建议收藏」

    acwing1068. 环形石子合并(区间dp+前缀和)「建议收藏」将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。请编写一个程序,读入堆数 n 及每堆的石子数,并进行如下计算:选择一种合并石子的方案,使得做 n−1 次合并得分总和最大。选择一种合并石子的方案,使得做 n−1 次合并得分总和最小。输入格式第一行包含整数 n,表示共有 n 堆石子。第二行包含 n 个整数,分别表示每堆石子的数量。输出格式输出共两行:第一行为合并得分总和最小值,第二行为合并得分总和最大

    2022年8月8日
    1
  • Java数组(二维数组)「建议收藏」

    Java数组(二维数组)「建议收藏」目录前言多维数组二维数组声明二维数组创建二维数组访问二维数组遍历二维数组最后前言在上一篇文章Java数组(一维数组)中,我们学习了一维数组,那么今天我们来学习Java二维数组。多维数组数组元素除了可以是原始数据类型、对象类型之外,还可以是数组,即数组元素是数组,通过声明数组的数组来实现多维数组。多维数组的使用和二维数组使用相似,我们来介绍二维数组。二维数组声明二维数组声明二维数组语法有两种格式,例如:数组类型[][]数组名;

    2022年7月7日
    20
  • oracle 11g安装时未能满足某些最低安装要求

    oracle 11g安装时未能满足某些最低安装要求本文是转载文章,文章的来源:csdn博客博主:huazicomeon文章:oracle11g安装时未能满足某些最低安装要求博文地址:https://blog.csdn.net/huazicomeon/article/details/53337849失败描述:Oracle安装包在"先决条件检查"步骤报告"未能满足某些最低安装要求。请复查并修复下表中列出的问题,然后重新检查系统。"并在安装界面下方…

    2022年7月25日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号