一、 所谓bind,就是指绑定本地接受端口。
指定ip,是为了分辨多ip主机。在有服务端和客户端的UDP中,bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。
UDP组播时最好不要提客户端/服务端的概念,而是提发送端/接收端的概念,避免出现逻辑理解混乱,其实这时,发送端==客户端,接收端==服务端。使用udp组播时,发送端用writeDatagrams()函数就可以直接向组播地址IP和port端口发送数据,不用调用bind()绑定IP和port 。接受端则需要调用bind()绑定该组播IP和指定port端口,同时将模式设定为:shared,允许其他接受端绑定,以从该地址获取数据。
指定ip,是为了分辨多ip主机。在有服务端和客户端的UDP中,bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。
UDP组播时最好不要提客户端/服务端的概念,而是提发送端/接收端的概念,避免出现逻辑理解混乱,其实这时,发送端==客户端,接收端==服务端。使用udp组播时,发送端用writeDatagrams()函数就可以直接向组播地址IP和port端口发送数据,不用调用bind()绑定IP和port 。接受端则需要调用bind()绑定该组播IP和指定port端口,同时将模式设定为:shared,允许其他接受端绑定,以从该地址获取数据。