为啥非得要跟踪程序才能使其通信正常呢
为什么非得要跟踪程序才能使其通信正常呢
我做的网络通信程序,刚开始运行有问题,发送的数据都不对,可是为什么我一用VC跟踪后就通信正常了(源代码没变),这是为什么呢?好奇怪啊,跟socket本身有关系吗?已经发生第二次这样的情况了,上一次也是这样,没上心,可这次又发生了,囧,什么道理啊!
------解决方案--------------------
跟踪运行实时性不强,是按步就班的运行,因此,很可能是对方发送数据太快导致你处理反映不过来.
------解决方案--------------------
不知道lZ说的不正常是怎么样的不正常?
------解决方案--------------------
可以试着在适当的位置sleep很短的时候
------解决方案--------------------
可以试着在适当的位置sleep很短的时间,
------解决方案--------------------
可以发一串 0xFF 看看
------解决方案--------------------
跟踪调试有可能打乱正常的执行顺序或结果(跟代码逻辑有关)
------解决方案--------------------
判断send的返回值,正常则可以继续发送,否则Sleep等待一下,然后重发,应该可以缓解你的问题
根据你的描述,应该不是Debug正常,Release错误,如果真的是这样,一般都是用到的数组啊申请的内存啊一般的变量等没有初始化,或者在循环中没有正确赋值造成的,找找看吧
------解决方案--------------------
试试,是不是这个原因。
非阻塞模式的socket对吧?
------解决方案--------------------
我想很有可以是丢包,或者粘包.
丢包即是你接收端处理不过来丢掉了.
粘包即可能多个数据包被系统放到一起发送了, 但你处理的时候,却没有去拆包.
------解决方案--------------------
对于时间比较敏感的代码,最好加TRACE来调试。打断点会破坏原有时间特征,导致问题被隐藏。
------解决方案--------------------
估计还是多线程问题。 但是往往加了一个sleep似乎能解决。我也遇到过好几次,也没上心,马上解决后就没再钻牛角尖了。
------解决方案--------------------
应该是互斥没做好。你跟踪的时候运行的慢。所以没问题。
我做的网络通信程序,刚开始运行有问题,发送的数据都不对,可是为什么我一用VC跟踪后就通信正常了(源代码没变),这是为什么呢?好奇怪啊,跟socket本身有关系吗?已经发生第二次这样的情况了,上一次也是这样,没上心,可这次又发生了,囧,什么道理啊!
网络
通信
socket
调试
VC
------解决方案--------------------
跟踪运行实时性不强,是按步就班的运行,因此,很可能是对方发送数据太快导致你处理反映不过来.
------解决方案--------------------
不知道lZ说的不正常是怎么样的不正常?
------解决方案--------------------
可以试着在适当的位置sleep很短的时候
------解决方案--------------------
可以试着在适当的位置sleep很短的时间,
------解决方案--------------------
可以发一串 0xFF 看看
------解决方案--------------------
跟踪调试有可能打乱正常的执行顺序或结果(跟代码逻辑有关)
------解决方案--------------------
判断send的返回值,正常则可以继续发送,否则Sleep等待一下,然后重发,应该可以缓解你的问题
根据你的描述,应该不是Debug正常,Release错误,如果真的是这样,一般都是用到的数组啊申请的内存啊一般的变量等没有初始化,或者在循环中没有正确赋值造成的,找找看吧
------解决方案--------------------
if(SOCKET_ERROR == send())
{
if(10035 == ::WSAGetLastError())
{
printf(L"socket资源不足");
}
}
试试,是不是这个原因。
非阻塞模式的socket对吧?
------解决方案--------------------
我想很有可以是丢包,或者粘包.
丢包即是你接收端处理不过来丢掉了.
粘包即可能多个数据包被系统放到一起发送了, 但你处理的时候,却没有去拆包.
------解决方案--------------------
对于时间比较敏感的代码,最好加TRACE来调试。打断点会破坏原有时间特征,导致问题被隐藏。
------解决方案--------------------
估计还是多线程问题。 但是往往加了一个sleep似乎能解决。我也遇到过好几次,也没上心,马上解决后就没再钻牛角尖了。
------解决方案--------------------
应该是互斥没做好。你跟踪的时候运行的慢。所以没问题。