VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 908|回复: 5

[求助] IOCP数据的发送乱问题

[复制链接]
50_avatar_middle
在线会员 发表于 2015-12-16 21:05:26 | 显示全部楼层 |阅读模式
3驿站币
敬爱的SYC大佬,之前俺不是一直在问你有关数据转发,类似花生壳的功能吗,俺实现了.
但是,仍然有问题,如下:
服务器:IOCP
我的客户,电脑上运行我的客户端:Client
我客户的客户,使用的是IE浏览器,以下简称:IE

当IE打开网页时,IOCP将收到的数据发送给Client,Client收到后发给IIS,并接收IIS数据且发送IOCP,
我将IIS发出的数据,重新加入我的封包之中,所以IOCP在接收到数据后有一个折包的过程
IOCP把收到的数据都压入:CList链表 A中,我在开一个线程来折包,组包;之后把完全的包在压入另一个CList链表B中,
在开一个线程专门取链表B的数据发送出去

这么实现,很正常,可问题是,如果IE用户几百几千几万,一个线程处理得过来吗,
由于,我就多开几个发送线程,可是多个线程发送,有机率造成乱序,IE接收到的数据不正确

如果能解决这个多线程发送问题,那么,折包,组包却只一有一个线程,同样也是忙不过呀,
难道非要我把折包,组包的过程放在GetQueuedCompletionStatus这个接收线程中吗


大侠,高人。。。。。求指点,如何提升效能





上一篇:向网络高人求助SOCKET问题
下一篇:关于SendMessageTimeout 未通知到其它进程的问题
70_avatar_middle
在线会员 发表于 2015-12-16 23:54:45 | 显示全部楼层
翻了下以前的帖子
你这种情况 没必要让服务器中转数据
服务器辅助打洞 客户机器P2P通信就行了
70_avatar_middle
在线会员 发表于 2015-12-16 23:57:22 | 显示全部楼层
还有
当年我来这学习的时候
你就在这提问题
这么多年了
你还在这提问题
50_avatar_middle
ico_lz  楼主| 发表于 2015-12-17 08:25:27 | 显示全部楼层
怎么说你了.........让SYC老大来批评你一下
51_avatar_middle
online_admins 发表于 2015-12-17 17:52:52 | 显示全部楼层
你这个就得考虑优化了
功能实现了,剩下的就是研究网络模型,看看设计模式,如何设计的能更高效一些了
是做服务器负载还是怎么样
05_avatar_middle
在线会员 发表于 2015-12-19 22:20:55 | 显示全部楼层
1.你要明确一点,iocp性能是没问题的,而且很稳定,当然前提是你需要设计模型要好!
2.对于你的问题,几万用户,几千万用户这个问题,一个电脑根本不能解决几千万的客户端数据处理。这部分涉及到了,分布式架构(这逼东西我也不懂,反正就是将连接分散,数据库分散,可以看看京东之前一个文档,讲的就是京东网站架构发展史,虽然很抽象,但是能给你一个大致  分布式的方向)。单个电脑 一般设计可以解决吃C10K ,现在挑战的是C100K了 ,这就需要精良的设计,这部分可以看看  muduo 百度搜索这个关键词。  我也只是看了一下大概。
3. 关于IOCP ,好久没用了,都差点忘记了,GetQueuedCompletionStatus这个函数一般在 线程里面调用 ,这样的线程 自己随便命名为A,  线程A一般只是处理数据的接受和分发,当达到一个完整的数据包之后,将数据包丢到 一个缓冲区 这个可以设计一个vector来存储, 然后 就是业务线程 ,业务线程将 vector里面的完整包处理就行了 。
关键:线程A 不要做耗时的操作。  
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 03:54

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表