最近设计了个UDP服务器,开始只使用一个socket进行收发,结果数据一多,一个socket异步收发(基于IO完成端口)出现N多问题。
所以只能分开两个socket搞了,找了下文章。
首先udp和tcp不一样,tcp同一个端口只能一个listen,UDP则可以同时监听(当然只能其中一个获得数据,按规则匹配)
1、UDP多路复用的是按最小规范集转发数据的。
例如A bing any , b bing 127.0.01,这时如果收到一个地址为127.0.0.1的包,那么b的绑定记录显然更详细,B得到了数据,A收不到。
如果非127.0.01的本机地址按AB的绑定分析后则是a获得数据。
2、如果A\B都绑定any(规则一样) 则是最后绑定的收到数据,条件相同就后入先得。
我一开始的时候也是犯2了,a用来监听,死活听不到,后来把A放到b后bind 就没事了。。。。囧。
这文章是给初涉socket提个醒了。