c++socket求助
SOCKET服务器端是JAVA写的,客户端是C++写的。
现在遇到一个奇怪的现象:
有的时候数据传输的非常顺畅,一秒钟几十甚至上百条数据都没问题,但是有的时候就卡在那里,数据是持续的,C++会滚动显示发送信息的条数,而服务器端的SOCKET服务在接收到数据之后都会写日志,在卡在那里的时候,客户端会停止滚动显示信息,服务器端的日志也没有更新,但是服务器端和客户端都不提示错误或者异常。
服务器端的JAVA用的观察者模式,客户端的C++用的单线程处理和发送数据。
请问这种现象大多数是因为什么产生的?我该从哪里入手解决?
谢谢!
[解决办法]
你说的卡是完全卡住不动了,还是只是很慢但是仍然能通信?
很慢可能是网络上有其他通信在占用带宽。
完全卡住了,你可以看两边的SOCKET是哪个先挂了,有可能是服务器挂了,导致客户端发不出去。
在卡住的时候你可以使用另外一个电脑,去连接服务器发送数据看是否正常,然后判断是客户端问题还是服务器端问题。
[解决办法]
先看网卡上有没有收到数据
[解决办法]
不过从速率上来看,“每秒上百条”是极限么?
如果是,实现应该有问题,对于局域网,tcp应该能轻松达到网卡最大带宽,udp因为包太碎和一些额外的控制流程情况复杂些
[解决办法]
[解决办法]
建议楼主下载个wireshark,对你网卡进行抓包分析。看看是不是网络的问题
[解决办法]
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html
[解决办法]
顶赵老师,说的太好了