首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

bind函数求解解决方案

2012-03-28 
bind函数求解分别在UDP TCP 和广播中的不同用法和含义。。绑定的对应地址和端口是什么意思,struct sockaddr_

bind函数求解
分别在UDP TCP 和广播中的不同用法和含义。。
绑定的对应地址和端口是什么意思,struct sockaddr_in 中的地址为谁的地址。
addr.sin_addr.s_addr = htonl(INADDR_ANY); 
在广播中,需要设置一个地址为任何地址,按我的理解是bind绑定的是当前要接收数据包的网卡的端口和Ip地址,广播给对应的地址应该用本机的地址就可以了吧怎么非要设置为any才行呢


[解决办法]
一般是服务端需要bind
tcp和udp需要知道双方的ip和端口,才能一对一地连接
服务端bind一定的ip地址范围和一个端口,才能接受客户端的连接申请
[解决办法]
服务端需要bind
客户端需要知道服务器端IP、端口信息,主动去连接服务器端
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。——也就是说,你的程序要绑定服务器的某地址,或者说:把服务器的某地址上的某端口占为已用。服务器操作系统可以给你这个指定的地址,也可以不给你。
  如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听。

热点排行