[心得] socket 多路复用误区

最近设计了个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提个醒了。

posted on 2012-02-03 18:52  LT  阅读(403)  评论(0编辑  收藏  举报

导航

直角体Web动力