zoukankan      html  css  js  c++  java
  • 关于socket通信bind()返回值错误:10049

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

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

  • 相关阅读:
    设计模式之桥接模式
    设计模式之代理模式
    设计模式之原型模式
    设计模式之建造者模式
    设计模式之抽象工厂模式
    设计模式之工厂模式
    设计模式之单例模式
    FR算法(Fruchterman-Reingold)
    zoj 3822 Domination (概率dp 天数期望)
    hdu 5023 A Corrupt Mayor's Performance Art(线段树)
  • 原文地址:https://www.cnblogs.com/raspberry/p/6685609.html
Copyright © 2011-2022 走看看