一个关于多播的思考问题
正文
问题描述
在socket多播(组播)编程中,一个套接字已经加入了一个多播组,开始持续接收数据。在实时接收数据的过程中,上游多播组或者路由器发生意外,导致套接字无法接收到实时数据。然后套接字加入备多播组收取数据。过了几分钟后,原多播组或者路由器恢复正常,此时套接字是否会收到两份数据?在发生意外的情况下,如果套接字想只接收一份数据,应该怎么做呢?
正文
目前有两个想法:
- 对数据进行过滤,在recvfrom()收数据的时候,如果收到的不是当前多播组发送的数据,就将其丢掉
- 在发生意外后,先不急着退出组播组,关闭套接字,而是先创建另一个套接字,然后再执行退出多播组,关闭套接字的操作,之后是否只会收到一份数据呢?这个想法仍需要验证
思考
如果是路由器出现问题了,那是否意味着套接字不可能再从这个路由器所在链路收到数据了呢?
评论
0 评论