[心得] socket 多路复用误区

本文分享了作者在设计UDP服务器过程中遇到的问题及解决方法。最初尝试使用单一socket进行收发,但当数据量增大时出现问题。通过将收发分离到不同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提个醒了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值