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

Posted 努力,奋斗的路上!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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)

完美解决,大喜。

以上是关于关于socket通信bind()返回值错误:10049的主要内容,如果未能解决你的问题,请参考以下文章

socket函数返回值是0,会导致bind失败吗?

套接字的接口函数:socket(),bind().....

关于socket通信UDP协议的问题,在客户端client下创建两个套接字s、s1分别用于recvfrom()和sendto()。

python实现一个客户端与服务端的通信

Linux进程间通信 -- 数据报套接字 socket()bind()sendto()recvfrom()close()

Matlab(Client)和Python(Server)进行TCP通信