高手介绍一下SOCKET编程

fpcc 2010-06-30 03:08:00
SOCKET编程有阻塞,非阻塞两部分,按模型又可分为SELECT,事件,消息,IOCP等,我想清楚的是他们的具体的应用范围,适应的并发量(即同时访问的客户端),各有哪种优势和不足。
C++BUILDER中的TSERVERSOCKET服务器端的阻塞和非阻塞是采用的什么机制,是把哪些东西封装了起来。
LINUX的如果有知道也希望说说,当然,希望大家推荐一些比较好了的这方面的书籍。

现在公司有一款产品是用C#的异步开发的,结果现在并发访问二百个左右的SOCKET就经常有大约一半左右的数据丢失,虽然不肯定是模型不对,但现在对这个还是有怀疑的。

一般情况下,多线程阻塞情况下,理论上可以有多少SOCKET并发,特别是数据量通信比较大时,实际情况呢,非阻塞呢,IOCP呢,网上和书上一般就说,IOCP管理成百上千个,太模糊了。

非常感谢大家。
...全文
137 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2010-07-01
  • 打赏
  • 举报
回复
c#的TcpListener clienter控件很简单的.. 是同步阻塞的..所以还是用异步的吧..而且要高效的异步模式.还有通讯架构.设计的不好,一样io效率不行啊. C#的iocp有例子的.网上找找封装好的.
jay0708 2010-06-30
  • 打赏
  • 举报
回复
《Visual C++网络通信开发入门与编程实践》适合基础的讲解。
周药师 2010-06-30
  • 打赏
  • 举报
回复
“C++BUILDER中的TSERVERSOCKET服务器端的阻塞和非阻塞是采用的什么机制,是把哪些东西封装了起来”
TSERVERSOCKET组件是采用了WSAAsyncSelect模型的;

200多个用TSERVERSOCKET绰绰有余了
lijianli9 2010-06-30
  • 打赏
  • 举报
回复
IOCP是管理大量连接小数据通讯的SOCKET模型,你说的200个左右的连接,但是不知道你的每次发送的数据量有多大??频率多少??其实TCP是一般情况下是不会丢失数据的,我觉得是你程序在接收数据的时候有问题,你可以先用抓包看下包是否已经到达本机.
fpcc 2010-06-30
  • 打赏
  • 举报
回复
谢谢大家,希望大家踊跃帮忙。
昨夜无风 2010-06-30
  • 打赏
  • 举报
回复
支持IOCP
来灵 2010-06-30
  • 打赏
  • 举报
回复
用完成端口开发大响应规模的Winsock应用程序
http://www.vckbase.com/document/viewdoc/?id=1732
xgPaul 2010-06-30
  • 打赏
  • 举报
回复
IOCP用于成千上万,海量通信,如某些游戏的服务器。如不是上万个的连接,用事件选择模型模型就可以了。。。
可以看一下《windows网络通信与程序设计》这本书,里面对各种通信模型都详细介绍,网上有代码下载。。。
zuiyuezhou888 2010-06-30
  • 打赏
  • 举报
回复
windows网络编程 iocp支持上万个也没问题
wuhuwy 2010-06-30
  • 打赏
  • 举报
回复
建议楼主看下Windows编程原理和Tcp/ip协议,你会找到自己的答案
liyinlei 2010-06-30
  • 打赏
  • 举报
回复
C#的异步模式,实际采用的是iocp,200个左右的连接不会有任何问题(我曾做过的一个项目有几千个连接)。丢数据不是这个模型问题,应该是程序问题。
雪影 2010-06-30
  • 打赏
  • 举报
回复
windows网络编程

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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