C++编写大规模socket服务器端的问题。

全速前行
博客专家认证
2010-09-29 03:55:37
这篇帖子发在这里不知道合适不?
首先我没有这方面的经验,
我们原来的服务器端是用c#编写的,由于使用的是同步,所以现在客户量上来了,大规模并发的情况下,
肯定是要改的。
领导说用c++写服务器比较好,
所以,
请教c++和c#在写socket服务器的谁更好些呢?

如果要用c++来写,有没有好些的开源框架(Windows下)呢?
我如何完成这个任务呢?

请高手们赐教!!!
...全文
1097 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
SongQues 2010-11-10
  • 打赏
  • 举报
回复
我劝你,你们这个项目还是用rtp只传数据的方式比较合适!呵呵!用不着这么复杂!
很土 2010-11-08
  • 打赏
  • 举报
回复
试试使用 GCI 接口, GCI32通用通讯接口 2.1.1.7 (build 2010.06.24) for Win32 & CentOS5.4
GCI接口是跨平台的, 可以在Windows和Linux下使用, 也可以相互调用。里面包含Windows
下的VC6, Delphi调用源代码,以及Linux下的C++调用源代码。

下载地址: http://download.csdn.net/source/2762115
cd2108006026 2010-11-08
  • 打赏
  • 举报
回复
ACE没特大意义。
linux下epoll,window的iocp
不管是什么系统,基本原理是:
网络线程与逻辑线程分离
网络线程负责真正的数据发送与接收,它管理一个epoll描述符,后者又管理多个socket描述符。
你可以用非阻塞accept和非阻塞connect将所有描述符都统一处理,编的程序比较漂亮
逻辑线程就只负责消息的解析以及反馈。
我觉得线程池和内存池是必不可少的,添上这两个文件吧。
Blue_may 2010-11-08
  • 打赏
  • 举报
回复
ace就是这样,学习意义大于使用意义。个人觉得。
不过照着例子写几个event还是相对比较简单的。
全速前行 2010-11-08
  • 打赏
  • 举报
回复
谢谢楼上几位,我知道ace和asio都是很优秀的框架,
我现在两个都在看,
因为asio要轻量些,所以优先考虑asio。

另外,24楼,我没有明白你说的前台说什么哦,不好意思~~

我现在纠结在这里:
1、压力测试如何做?
是写客户端,然后开成百上千个这样子土办法,还是有好的 工具呢?
2、服务器端需要操作数据库(我们用sql2000),这个在c++中有什么好操作数据库的库么?
谢谢大侠~~~
redleaves 2010-11-07
  • 打赏
  • 举报
回复
ACE提供了一整套解决方案.包括OS接口的抽象层.如果是多平台开发.或有移植的打算.用ACE还是很划算的.
而ASIO的包装要轻量级得多.只是单纯的IO.使用起来很容易.性能也很好.比如我前些年用ACE写了个WEB服务器没有做太多优化的情况下.性能就和nginx不相上下了...在我的测试平台上,当500并发链接的时候,nginx的吞吐率可以达到8000每秒,但链接丢失有5%左右.而我写的那个服务器也有近8000的吞吐率,而链接丢失还不到0.5%.
全速前行 2010-11-07
  • 打赏
  • 举报
回复
求教~~~
zmkkobe 2010-11-07
  • 打赏
  • 举报
回复
c++要好一些俄
manytao 2010-11-07
  • 打赏
  • 举报
回复
另外补充一点。 ACE在吞吐量方面 是非常优秀的。
manytao 2010-11-07
  • 打赏
  • 举报
回复
推荐使用ACE框架 不知lz 后台虽然用ACE了 但是不知道你们前台使用的是什么

推荐ACE 另外如果有前台需要的话 推荐corba接口进行转换通信
gules 2010-11-07
  • 打赏
  • 举报
回复
如果觉得ACE庞大,可以看看Ice(The Internet Communications Engine)。
AI应用技术 2010-11-07
  • 打赏
  • 举报
回复
过来学习了。。。
lijianli9 2010-11-07
  • 打赏
  • 举报
回复
ACE太庞大了,
全速前行 2010-11-05
  • 打赏
  • 举报
回复
一个多月了,
及看ace也看asio,
但最后还是决定先用asio来搞,毕竟ace太庞大了,一时半会没有进展~~~

现在有两个问题需要大侠指点:
1、压力测试如何做?
是写客户端,然后开成百上千个这样子土办法,还是有好的 工具呢?
2、服务器端需要操作数据库(我们用sql2000),这个在c++中有什么好操作数据库的库么?
谢谢~~~
全速前行 2010-10-08
  • 打赏
  • 举报
回复
现在我的选择多了起来,
十一期间我在看ACE,反正是从0开始,
但是《C++ 网络编程》卷一,卷二这两本书很好,
我打算在近期把主要精力投入到网络编程这块,
希望各位大侠多多指教啊。
boost我也是第一次听说,呵呵~~一并参考参考
kingstarer 2010-10-08
  • 打赏
  • 举报
回复
要是完全不会c++ 写出来的代码估计比原来用C#的还差
全速前行 2010-10-08
  • 打赏
  • 举报
回复
现在我的选择多了起来,
十一期间我在看ACE,反正是从0开始,
但是《C++ 网络编程》卷一,卷二这两本书很好,
我打算在近期把主要精力投入到网络编程这块,
希望各位大侠多多指教啊。
boost我也是第一次听说,呵呵~~一并参考参考
SongQues 2010-10-08
  • 打赏
  • 举报
回复
我就服了!你慢慢整吧!呵呵!帮顶!不过这个小程序对用不用C++跟本没有什么用!
鸵鸟 2010-10-01
  • 打赏
  • 举报
回复
boost 就很好, windows下用的iocp,linux 下用的 epoll

如果这个性能还不行的话, 你就直接用iocp 和 epoll吧

ace 还是算了吧, 性能肯定不如boost
冻结 2010-09-29
  • 打赏
  • 举报
回复
ACE挺快的。

《C++ 网络编程》卷一,卷二看看,
就可以写了。

比研究IOCP快。
加载更多回复(11)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧