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


    这个问题,我差点和客户吵起来了。我的电脑确实没有问题,客户电脑却会经常出现,。今天查了下,居然是这种问题,大意了,在这里记录下。

    服务器端程序开启的时候总是提示:bind错误,用WSAGetLastError()获取错误类型为10049。

     memset(&server_addr,0,sizeof(server_addr));
     server_addr.sin_family = AF_INET;
     server_addr.sin_port =htons(7000);
     server_addr.sin_addr.s_addr=inet_addr(INADDR_ANY);

    10049 的意思是这样的。

    1 0 0 4 9 —W S A E A D D R N O TAVA I L
    不能分配请求的地址。A P I 调用中指定的地址对那个函数来说无效时,就会产生这样的错误。例如,若在b i n d 调用中指定一个I P 地址,但却没有对应的本地I P 接口,便会产生这样的错误。另外,通过c o n n e c t 、W S A C o n n e c t 、s e n d t o 、W S A S e n d To 和W S A J o i n L e a f 这四个函数为 准备连接的远程计算机指定端口0 时,也会产生这样的错误

    最后经过一个网友的指点,

    服务端是不能够用INADDR_ANY的  因为这个表示是主机上任意的地址,但是你还不知道服务器端的IP地址,你怎么找到服务器? 所以这里应该把INADDR_ANY设置为一个真正的IP地址,   INADDR_ANY只能用于发送端(就是说,我要发送某个东西,可以采用我的任意的IP,而接受的IP必须是一个我们能找到它的位置的IP)

    完美解决,大喜。

    2017/8/18 我现在觉得出现这个问题的原因会不会是上网卡的原因。

  • 相关阅读:
    Vmware 添加虚拟磁盘
    2019-2020-2 《网络对抗技术》 Exp3 免杀原理与实践
    Docker 容器更换软件源
    Docker 查看容器 Linux 版本
    OpenMediaVault 5 进阶配置(四) Portainer 管理 Docker
    Portainer 中文文档:部署
    树莓派 部署 Docker 数据库容器
    通过Cookie统计上次网页访问时间
    用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
    删掉双系统
  • 原文地址:https://www.cnblogs.com/techdreaming/p/7324885.html
Copyright © 2020-2023  润新知