1、send和recv最大传输的数据报长度是1452,如果是大于等于1453个字节,客户端发送成功,服务端就阻塞在recv上,不知为什么。
2、服务端子线程监听到一个套接字后发送第一包数据,然后阻塞在recv,然后在主线程成功发送一个数据包的时候,子线程的recv返回SOCKET_ERROR.
在局域网测试却没有这些问题,请高人指点。
13 个解决方案
#1
使用什么SOCKET?
采用的组塞,非组塞?
1.这种情况,你需要在server端看看你发送的数据对不对
就是你是否成功的发送了1453个字节
2.同样你也需要看看是否接收到数据
如果数据正常,那就是是你的程序有问题了
采用的组塞,非组塞?
1.这种情况,你需要在server端看看你发送的数据对不对
就是你是否成功的发送了1453个字节
2.同样你也需要看看是否接收到数据
如果数据正常,那就是是你的程序有问题了
#2
tcp连接,两端都是阻塞的,
主线程成功发送一个数据包的时候,对方也成功接到了这个数据包,然而子线程正在阻塞的recv返回了
主线程成功发送一个数据包的时候,对方也成功接到了这个数据包,然而子线程正在阻塞的recv返回了
#3
线程中是否循环
#4
抓一个包来看看
#5
肯定是没有处理好‘粘包’问题造成的。
#6
线程中是循环接收处理的,这跟粘包没有关系吧
#7
这是正常的。你用1500减去ip头,tcp头就是剩下这么多了。
在tcp/IP详解中有说。mtu
在tcp/IP详解中有说。mtu
#8
KAO,把程序贴出来看,
用TCP协义还去管什么MTU
加我吧,158669899
用TCP协义还去管什么MTU
加我吧,158669899
#9
听你的意思,服务器根本没收到消息哦,为什么,就要看代码啦。
#10
感觉代码问题
#11
会不会是线程优先级问题?等下午贴代码
#12
真是奇怪,我的客户端如果连续发送数据,服务端就会阻塞,而如果客户端每发送一次数据后Sleep(1000)或者更长时间,就可以了
#13
为什么?
#1
使用什么SOCKET?
采用的组塞,非组塞?
1.这种情况,你需要在server端看看你发送的数据对不对
就是你是否成功的发送了1453个字节
2.同样你也需要看看是否接收到数据
如果数据正常,那就是是你的程序有问题了
采用的组塞,非组塞?
1.这种情况,你需要在server端看看你发送的数据对不对
就是你是否成功的发送了1453个字节
2.同样你也需要看看是否接收到数据
如果数据正常,那就是是你的程序有问题了
#2
tcp连接,两端都是阻塞的,
主线程成功发送一个数据包的时候,对方也成功接到了这个数据包,然而子线程正在阻塞的recv返回了
主线程成功发送一个数据包的时候,对方也成功接到了这个数据包,然而子线程正在阻塞的recv返回了
#3
线程中是否循环
#4
抓一个包来看看
#5
肯定是没有处理好‘粘包’问题造成的。
#6
线程中是循环接收处理的,这跟粘包没有关系吧
#7
这是正常的。你用1500减去ip头,tcp头就是剩下这么多了。
在tcp/IP详解中有说。mtu
在tcp/IP详解中有说。mtu
#8
KAO,把程序贴出来看,
用TCP协义还去管什么MTU
加我吧,158669899
用TCP协义还去管什么MTU
加我吧,158669899
#9
听你的意思,服务器根本没收到消息哦,为什么,就要看代码啦。
#10
感觉代码问题
#11
会不会是线程优先级问题?等下午贴代码
#12
真是奇怪,我的客户端如果连续发送数据,服务端就会阻塞,而如果客户端每发送一次数据后Sleep(1000)或者更长时间,就可以了
#13
为什么?