printf对iocp线程的影响,SOCKET大牛进来看看,解决就给分,绝不赖账。

海子0011 2011-09-23 04:19:27
我做一个IOCP服务器,同一时刻用来接受大概100台客户端各自上传几百兆的大文件,IOCP服务器3类线程,一个线程用一个IOCP来接受客户端的连接,一类线程用一个IOCP接受客户端的SNED和RECV并用WRITEFILE异步的把文件写到各自的文件中,一类线程用一个IOCP来处理WRITEFILE的结果。
我在测试的时候,在接受客户端的SNED和RECV地线程中用printf打印了服务器端接受到得客户文件信息。测试代码已经很完美了,然后我就把PRINTF去掉了。去掉后发现IOCP服务器运行时,有的客户端连接不上,有的客户端连接上了但服务器接收不到客户端的数据,有的接收客户端数据到一部分时就不在接收了。而且这时候QQ都回掉线,好像IOCP服务器的网络资源都被占满了一样。
分析去掉PRINTF就是IOCP服务器少了一个时延,所导致的,但时延对IOCP服务器的那里造成了影响,改如何改进就想不明白了。求高手指点,解决马上给分。
...全文
150 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yynetsdk 2011-10-12
  • 打赏
  • 举报
回复
犹如程序有断点无断点时,运行不同一样。多数 因为锁的原因。
jsyren 2011-10-11
  • 打赏
  • 举报
回复
楼主是吧自己怀疑的地方说了一下。。。。。介绍的并不全面

我认为应该不会是printf的问题。每个文件接收线程都接收,写自己负责的文件,又不牵连线程同步,不可能会是这样。

难道楼主吧printf添加上以后,问题就消失了?
真是这样的话,换台机器试试!
zhouzhipen 2011-10-11
  • 打赏
  • 举报
回复
服务器代码设计有问题,printf只会延时,如果线程是排队的,与延时没有半点关系。
「已注销」 2011-10-11
  • 打赏
  • 举报
回复
你的服务器本身代码就有问题。

我实在告诉你:

我看过N多中国人写的IOCP服务器代码,没有一个是完全可靠的。
UUcall007 2011-10-11
  • 打赏
  • 举报
回复
楼主代码有问题 和printf没关系
sparrow429 2011-10-08
  • 打赏
  • 举报
回复
这么大的数据量,怎么接收过来啊。。。我一直在头痛这个问题
smwhotjay 2011-10-08
  • 打赏
  • 举报
回复
疯魔症 2011-10-08
  • 打赏
  • 举报
回复
贴代码吧。
美丽海洋 2011-09-23
  • 打赏
  • 举报
回复
你的压力应该在第二个线程上,但是你的第二个线程用什么机制实现的?会不会导致了你的问题;
肯定有个队列什么的来传输文件,当传输是其他链接等待是不是超时了,你可以注意一下这个问题

像你说的去掉printf就没有问题了,我觉得肯定不会是这个引起的,
海子0011 2011-09-23
  • 打赏
  • 举报
回复
去掉后发现IOCP服务器运行时,有的客户端连接不上,有的客户端连接上了但服务器接收不到客户端的数据,有的接收客户端数据到一部分时就不在接收了。而且这时候QQ都回掉线,好像IOCP服务器的网络资源都被占满了一样。
原因我也不知道。
oyljerry 2011-09-23
  • 打赏
  • 举报
回复
是不是printf的去掉引起数据处理加快等,而代码本身有一些地方可能没有处理
首先你还是要先分析到底通信出问题的原因.
海子0011 2011-09-23
  • 打赏
  • 举报
回复
顶顶顶,大侠们快出现吧。
海子0011 2011-09-23
  • 打赏
  • 举报
回复
咋没人呢,CSDN现在太冷清了。

18,356

社区成员

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

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