socketeq

  点对点连接可以处理许多通信需求,但是随着直接连接的增加,在多对通信方之间传递相同的消息将变得越来越困难。

  将消息单独发送到每个接收者将消耗额外的处理时间和带宽,这将对诸如流式视频或音频操作之类的应用造成显著的性能问题。

  使用多播同时向多个端点发送消息可以获得更好的效率,因为网络基础设施可以确保数据包将被发送到所有接收者。

  多播消息总是使用UDP发送,因为TCP需要提供一对通信系统。组播地址称为组播组,是常规IPv4地址范围(224.0.0.0~230.255.255.255)的子集,保留用于锚通信。

  这些地址将由网络路由器和交换机进行特殊处理,因此发送到该组的消息可以分发给互联网上加入该组的所有接收者。

  应该注意的是,大多数被管理的路由器和交换机默认禁止多播通信。如果后续运行的程序有问题,可以检查一下自己的网络设置。

  因为不可能知道您将收到多少响应,所以您需要为套接字使用一个超时值,以避免在等待响应时出现无限阻塞。

  TTL(生存时间值)是一个生存时间值,用于控制有多少网络接收该数据包。使用IP_MULTICAST_TTL选项和setsockopt()函数设置TTL。默认值1表示路由器不会将数据包转发到当前网段之外。最大TTL值为255,应打包为1个字节。

  建立多播接收器的第一步是创建UDP套接字。创建常规套接字并将其绑定到端口后,可以使用setsockopt()来更改IP_ADD_MEMBERSHIP选项并增加Anton多播组。

  该选项值是多播地址的8字节压缩表示,后跟侦听通信流的服务器的网络接口,该接口由其IP地址标识。这里,接收方使用INADDR_ANY来监听所有接口。

赞(0)
未经允许不得转载:生活随想分享 » socketeq

生活随想分享生活随想分享