一个连续发100个数据包造成SOCKET阻塞的问题!!急呀!! 我的程序里有这样类似的一段代码for(int i=0;i<100;i++){ ... send(sock,SendData,Length,0); ...}这样发了之后会造成SOCKET阻塞,以后接收和发送都不能了!WHY? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样造成阻塞后,双方都不能传送及接收数据不能判断是那一方先出现问题!(双方SOCKET的缓冲区是足够的,上面的那段程序结构也不允许修改)那位知道怎么样判断吗?谢谢各位了!! 问题核心是:当出现我上面所说的那种情况(程序不能再更改),应该怎么判断那一方的SOCKET先出现了故障????? 可能是send发送数据没有发送完全,第一次的数据和第二次的混在一起了你应该用循环发送的,直到发送Length长度。好像没有办法知道那端先阻塞了,要修改程序结构吧 我有Sniffer软件监视双方的SOCKET的接收与发送情况当客户方(就是上面我说的)连续发送一批数据时,服务方能接收并应答,但是客户方没有收到就答,用Sniffer查看服务方确实发出去了,但客户方就是没收到还有什么好的测试方法呀?? 客户方没有收到应答======================================== 没有收到应答显然是程序结构的问题,楼主应该开两个线程,两个socket, 一个发送,一个接受,否则通讯是会有问题的 for(int i=0;i<100;i++){ ... send(sock,SendData,Length,0); ...}可以这样计算这段程序产生流量:(Length * 8)/TimePeriod;像这样的For循环,可以产生的流量大约Length*8Mbps,如果你的带宽不够,程序肯定出问题! 如果不能该程序结构,尝试将Length的值改小!减少发生流量 好像依你们看是客户方SOCKET的问题!你们没有考虑过是服务方的SOCKET的问题吗?不过我自己还是赞同修改客户方的程序结构!! To:yuanbocsut(打盹的神仙) 你是不是叫我控制发送的流量呀 >>>>我现在不是改程序结构的问题,而是怎样找错误的问题<<<< tcp吧!你没有收!tcp必须是可靠传输.收了以后回回穿能接收的窗口大小!你现在肯定窗口是0!你爪包可以看看. 急急急!!!就这么多分,全给了! VC6.0中为什么给水晶报表设置SQL语句无效?????????????????? Vs2005+Access,AddNew 出现记录集只读??VC6下没有问题 构造类对象问题! 我用MCI做的音频,如何实现音量调节??(急) MFC使用MSchart显示出图后如何保存图片! 问几个比较傻的问题,纯属求学~ 如何屏蔽或者激活DirectDraw? 如何获取进程使用率 一个关于建切分窗口的简单问题 关于服务程序的权限 我想要比较Test.mdb库label1表中,user,pass和我的数据user,id是否相等!!! 脑子糊涂了,问下大家指针的问题
你应该用循环发送的,直到发送Length长度。
好像没有办法知道那端先阻塞了,要修改程序结构吧
当客户方(就是上面我说的)连续发送一批数据时,服务方能接收并应答,但是客户方没有收到就答,用Sniffer查看服务方确实发出去了,但客户方就是没收到还有什么好的测试方法呀??
{
...
send(sock,SendData,Length,0);
...
}可以这样计算这段程序产生流量:
(Length * 8)/TimePeriod;像这样的For循环,可以产生的流量大约Length*8Mbps,如果你的带宽不够,程序肯定出问题!
你们没有考虑过是服务方的SOCKET的问题吗?不过我自己还是赞同修改客户方的程序结构!!
>>>>我现在不是改程序结构的问题,而是怎样找错误的问题<<<<