我做的网络通信程序,刚开始运行有问题,发送的数据都不对,可是为什么我一用VC跟踪后就通信正常了(源代码没变),这是为什么呢?好奇怪啊,跟socket本身有关系吗?已经发生第二次这样的情况了,上一次也是这样,没上心,可这次又发生了,囧,什么道理啊!网络通信socket调试VC

解决方案 »

  1.   

    程序Debug下没问题,Release下有问题?自己百度一下出现这种情况都有哪些原因,然后到你程序中去找可能引起这个问题的代码区。
      

  2.   

    正常就是通信正确不正常就是通信的时候socket发送的代码是乱的,不知道是嘛东西
      

  3.   

    上面的“socket发送的代码”指的是用socket发送的数据,打字太快了就是容易错
      

  4.   

    可以试着在适当的位置sleep很短的时候
      

  5.   

    可以试着在适当的位置sleep很短的时间,
      

  6.   

    可以发一串 0xFF 看看 
      

  7.   

    判断send的返回值,正常则可以继续发送,否则Sleep等待一下,然后重发,应该可以缓解你的问题根据你的描述,应该不是Debug正常,Release错误,如果真的是这样,一般都是用到的数组啊申请的内存啊一般的变量等没有初始化,或者在循环中没有正确赋值造成的,找找看吧
      

  8.   


    if(SOCKET_ERROR == send())
    {
      if(10035 == ::WSAGetLastError())
      {
       printf(L"socket资源不足");
       }
    }试试,是不是这个原因。
    非阻塞模式的socket对吧?
      

  9.   

    对于时间比较敏感的代码,最好加TRACE来调试。打断点会破坏原有时间特征,导致问题被隐藏。
      

  10.   

    估计还是多线程问题。 但是往往加了一个sleep似乎能解决。我也遇到过好几次,也没上心,马上解决后就没再钻牛角尖了。