c++SOcket非阻塞编程中打开了多个端口,为啥有时会发生各个端口相互干扰

基本代码如上,开通了两个端口分别用于发生不同种类的数据,OnRecv1中和OnRecv2中被调用时应该传进去的参数CurSocket应该是两个固定的不同的Socket的才... 基本代码如上,开通了两个端口分别用于发生不同种类的数据,OnRecv1中和OnRecv2中被调用时应该传进去的参数CurSocket应该是两个固定的不同的Socket的才对呀,但是调试时发现有时会出现混淆,结果导致两个端口的数据都在OnRecv1中可以收到,导致数据混杂,请问怎么回事? 展开
 我来答
百度网友46d038b
2014-08-08 · 超过14用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:27.6万
展开全部
就代码来看,你自己添加的消息响应函数,主要是监听端口是否发生了变化,两个OnNetEvent的性质相同,就是只要端口发生了变化,就会响应这个函数,而你两个event响应函数基本相同,所以会发生你说的问题,一般只绑定一个端口用于监听。如果一定要绑定多个端口,实现非阻塞通信,可尝试一下多线程,这样应该不会产生干扰。
追问

追答
你注册的两个网络事件,并不表示这两个响应事件就被分配到两个端口进行监听,不论是port1,还是port2有变化,两个事件都会响应,因为他们只是监听网络端口是否有变化,所以wParam有时是350有时是360,如果你把onrecv这个函数写成接收的网络数据,应该就不会有交叉,但建立用多线程,这样的编写方式不推荐,因为每次两个事件都会响应,无论有该端口无数据
大伞夏
2014-08-08 · 超过17用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:38.9万
展开全部
你关键代码都不贴出来,怎么传的参数啊,怎么创建的socket啊?
追问
补充了代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式