UDP通信中 server端ip为0的问题

在UDP通信中,客户端也可以不需要bind自身IP和端口号,而服务器需要bind自身IP地址和端口号。

看代码时候发现在UDP通信中,server端本地信息初始化时ip设置为0了(如上图两个部分代码所示),查了一些资料:

  • INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。
  • 在建立网络服务器应用程序时,server会通过bind()函数通知操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我,即server程序会申请绑定服务器的某地址及端口。而服务器操作系统可以给这个指定的地址,也可以不给。
  • 如果server端操作系统内有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听)出于某种原因:可能是服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听。

猜你喜欢

转载自blog.csdn.net/Liangren_/article/details/115084023