求MFC类的CAsyncSocket实现 或者 普通socket异步实现方案 C++

①客户端发送→②中转服务器→③中转服务器连接服务器A↓↓↓⑥返回给客户端←⑤中转服务器←④服务器A返回到中转服务器都是多个客户端连接到中转服务器处理难点在于中转服务器连接... ①客户端发送 → ②中转服务器 → ③中转服务器连接服务器A
↓↓↓
⑥返回给客户端 ← ⑤中转服务器 ← ④服务器A返回到中转服务器

都是多个客户端 连接到中转服务器 处理难点在于中转服务器 连接服务器A的时候 往往客户端一多就卡死了.
展开
 我来答
空雪梦见
2013-07-14 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1167万
展开全部
哦设计思路啊。CAsyncSocket的实现已经很简单了,它内部用的就是WSAAsyncSelect。

从CAsyncSocket派生出新的类,重载它的几个虚函数(OnXXXXXX系列)
我想知道你现在怎么做的……你至少先把select怎么用给学会了吧,然后你就知道select是等待某事件的发生,CAsyncSocket::AsyncSelect也是一样,等待事件发生。只不过select是事件发生以后函数才返回,而AsyncSelect是调用以后马上返回,事件发生以后它会调用你那些OnXXXXXXX函数。

我之前解答过类似的问题,当时给出了完整的参考例子和方法
http://zhidao.baidu.com/question/569232071
你可以去看一下
更多追问追答
追问
你那个太初级了. 是基本于1对1的连接  网上也大多是基于此类设计的教程.  而我需要设计一个 中转服务器   面临多个客户的同时连接 以及收到客户数据后还要  把数据转发到服务器A   然后取到服务器A的数据后  再返回给多个客户中的某一个.   也非常感谢您的帮助!谢谢知识的共享
追答
……我说你要先把select学会了,这个会用吗?

我给出的另一个的答案的理由是要你看一下CAsyncSocket要怎么用,如何异步select如何处理select完成时的消息。会用select(你只要会对单一客户端的select就够了,CAsyncSocket比多客户端时的select简单很多),就大概知道socket的框架是什么个样,然后掌握基本的CAsyncSocket使用方法,套入原来的框架就一样了。
你现在是怎么处理的,为什么慢,调度socket的框架是什么样的,什么信息也没有,自然也就没有办法给你提供什么更多信息

哦我知道了,我猜测是你原来是一条路下来 recv send recv send这样是吗?要改的话你要把所有的recv都改为先AsyncSelect,到OnRecv里面去recv;所有的Send都改为先AsyncSelect然后到OnSend里面去send。所以如果原来框架是这样一路下来,那么你现在要改为在CAsyncSocket里面(子类)记录当前执行状态,这样才能在你OnRecv或者OnSend的时候执行原来顺序上正确的语句。就是顺序结构要改成类似循环结构那样
zjnny
2013-07-13 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1054万
展开全部
只知道WSAAsyncSelect,另外就是使用多线程不断的创建listenthread
不知道你说的客户端多到什么程度,不对题勿喷
详细介绍介绍啊,另外为什么会有个中转服务器,作为参考学习下
追问
我也知道那个函数   我想寻设计思路  谢谢你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式