为什么非得要跟踪程序才能使其通信正常呢

云满笔记 2013-06-18 08:58:17
我做的网络通信程序,刚开始运行有问题,发送的数据都不对,可是为什么我一用VC跟踪后就通信正常了(源代码没变),这是为什么呢?好奇怪啊,跟socket本身有关系吗?已经发生第二次这样的情况了,上一次也是这样,没上心,可这次又发生了,囧,什么道理啊!
...全文
179 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyouneng 2013-06-27
  • 打赏
  • 举报
回复
同意楼上版主大大的说法
傻X 2013-06-26
  • 打赏
  • 举报
回复
应该是互斥没做好。你跟踪的时候运行的慢。所以没问题。
绿 2013-06-26
  • 打赏
  • 举报
回复
估计还是多线程问题。 但是往往加了一个sleep似乎能解决。我也遇到过好几次,也没上心,马上解决后就没再钻牛角尖了。
Squall_zy 2013-06-26
  • 打赏
  • 举报
回复
对于时间比较敏感的代码,最好加TRACE来调试。打断点会破坏原有时间特征,导致问题被隐藏。
xiaohuh421 2013-06-25
  • 打赏
  • 举报
回复
我想很有可以是丢包,或者粘包. 丢包即是你接收端处理不过来丢掉了. 粘包即可能多个数据包被系统放到一起发送了, 但你处理的时候,却没有去拆包.
Damn_boy 2013-06-25
  • 打赏
  • 举报
回复

if(SOCKET_ERROR == send())
{
if(10035 == ::WSAGetLastError())
{
printf(L"socket资源不足");
}
}


试试,是不是这个原因。
非阻塞模式的socket对吧?
wwwspider001 2013-06-25
  • 打赏
  • 举报
回复
判断send的返回值,正常则可以继续发送,否则Sleep等待一下,然后重发,应该可以缓解你的问题 根据你的描述,应该不是Debug正常,Release错误,如果真的是这样,一般都是用到的数组啊申请的内存啊一般的变量等没有初始化,或者在循环中没有正确赋值造成的,找找看吧
dahaiI0 2013-06-21
  • 打赏
  • 举报
回复
跟踪调试有可能打乱正常的执行顺序或结果(跟代码逻辑有关)
云满笔记 2013-06-21
  • 打赏
  • 举报
回复
这个可能涉及到底层、内核的问题难道只有天晓得
hsz871204 2013-06-20
  • 打赏
  • 举报
回复
可以试着在适当的位置sleep很短的时间,
hsz871204 2013-06-20
  • 打赏
  • 举报
回复
引用 6 楼 wan212000 的回复:
上面的“socket发送的代码”指的是用socket发送的数据,打字太快了就是容易错
可以试着在适当的位置sleep很短的时候
云满笔记 2013-06-20
  • 打赏
  • 举报
回复
上面的“socket发送的代码”指的是用socket发送的数据,打字太快了就是容易错
云满笔记 2013-06-20
  • 打赏
  • 举报
回复
正常就是通信正确 不正常就是通信的时候socket发送的代码是乱的,不知道是嘛东西
woshi_hujunjun 2013-06-20
  • 打赏
  • 举报
回复
可以发一串 0xFF 看看
worldy 2013-06-19
  • 打赏
  • 举报
回复
不知道lZ说的不正常是怎么样的不正常?
云满笔记 2013-06-19
  • 打赏
  • 举报
回复
那怎么办呢 还有这种事情 发得太快就会出错 有没有什么对策 可是我跟踪以后每次运行都正常,这什么情况
hdg3707 2013-06-18
  • 打赏
  • 举报
回复
跟踪运行实时性不强,是按步就班的运行,因此,很可能是对方发送数据太快导致你处理反映不过来.
liuli7786 2013-06-18
  • 打赏
  • 举报
回复
程序Debug下没问题,Release下有问题?自己百度一下出现这种情况都有哪些原因,然后到你程序中去找可能引起这个问题的代码区。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧