当前位置:  技术问答>linux和unix

关于Socket编程的诡异问题,求解

    来源: 互联网  发布时间:2017-02-03

    本文导语:  是这样的,我在Linux下有个SOCKET服务器,想测试下性能,结果就在windows下用一个程序去测试。 测试流程如下 1. 客户端首先发送一个包给服务器端 2. 服务器接收到这个包,立即返回一个包给客户端 3. 客户端收到服...

是这样的,我在Linux下有个SOCKET服务器,想测试下性能,结果就在windows下用一个程序去测试。

测试流程如下
1. 客户端首先发送一个包给服务器端
2. 服务器接收到这个包,立即返回一个包给客户端
3. 客户端收到服务器返回的包,再立即给服务器端发送一个

如此循环

。。。。。
也就是说是严格单程的  客户端发 -> 服务器收 -> 服务器发 -> 客户端收 ,同一时间客户端和服务器端要么发,要么收,


测试下来,10秒钟大概能发5000个包,没什么问题

但是诡异的是,现在我开始搞两组 包1 包2,在包内容里带上了1和2
包1的处理方式和之前不变,发出去,收到服务器回应后立即再发回去,如此循环

包2的处理是启动一个timer,20毫秒,人为的延时20毫秒发送,
客户端发 -> 服务器收 -> 服务器发 -> 客户端收延时20毫秒 ->客户端发

这样的话,10秒钟只能发大概1000个包左右了,性能急剧下降,但是按理说我现在是双线,就算包2完全帮不上忙也不应该影响包1,因为包1的处理方式跟之前5000个包是一样的。

然后我分析的问题会不是是socket的问题,因为第一种模式下 socket连接 同一时间只可能是 收包或者发包,但是第二种模式下,可能这条连接在收包1的时候,包2请求发送,这样同一时间既收又发,导致性能出问题。

补充:
1.我双开了两个测试程序,两个程序同时用第一种方式测试,两个都没有问题,都能达到5000的量,也没有太大的延时。
2.在用包1加包2混合的模式时,大部分的包延时都低于1毫秒,但是有些包居然延时有100多毫秒
3.服务器端用的epoll模型,客户端用了MFC的CAsyncSocket 和 flash的socket做测试,两者结论相同



求解,先谢谢各位了,有什么疑问可以问我,会一直在线等待解答!!

|
包的大小?抓包的情况截个图(延时100ms的)?难道是传说中的nagle算法...

|
关闭了NEGLE

    
 
 

您可能感兴趣的文章:

  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • 一个java和vc通讯的socket问题求解,急
  • linux下的socket编程,有点疑问,求解释阿!
  • 高分求解linux socket通信 UDP丢包问题
  • 新手求解Linux Fedora socket连接是提示Connection refused??
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 关于文件操作和Socket网络编程!
  • linux下socket编程问题!
  • socket编程 中的bind问题
  • socket编程--htons
  • 急!!请教关于linux socket编程的一个问题!!
  • 急!关于SOCKET编程,在线等待!
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • 多进程socket编程问题
  • 问一个socket编程问题,急~~~
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 请教一个socket编程问题
  • 求助!!linux下socket编程
  • socket编程,使用recvfrom()函数监听问题。
  • sco unix下socket编程的问题,请大家帮忙
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux socket问题。。怎样获得已帮定特定port的一个套接字socket
  • 你是否可以回答Socket的问题?数据先后问题
  • 关于socket概念的理解问题!
  • Socket的问题
  • socket accept问题,大家指教。
  • socket客户端程序的问题
  • 关于多网口socket通信的简单问题
  • fgets用在SOCKET流上的问题
  • mysql iis7站长之家
  • linux下用socket实现多进程间通信问题?
  • 请教:多线程使用同一个socket进行数据收发会出现什么问题?
  • 请问socket方面的问题
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • windows 与 linux socket 编程问题
  • Socket的问题?
  • 关于socket通讯的一个问题
  • socket read返回问题
  • 奇怪问题,关于Socket的!
  • 问个linux下raw socket的问题
  • C++ socket挂钩问题
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3