我在做网络通讯时遇到这样一个问题,上位机每次接收的时候都要加上AfxMessageBox("Yes");这条语句才能接收到数据,而不加就接收不到,这是为什么?我该怎么做?请高手指正。
接收函数是这样的:
char buf[17][2048];
AfxMessageBox("Yes");
memset(buf,0,34816);
int Count = Receive(buf,34816);

解决方案 »

  1.   

    你通过什么方式收发数据
    socket?
      

  2.   

    char buf[17][2048];memset(buf,0,34816);
    int Count = Receive(buf,34816);或许你写在一个循环中,AfxMessageBox("Yes");没有这个语句,反复循环时,把数据毁掉了。有这个语句暂停了那么一下,你就监视到了。
      

  3.   

    这个实际上是因为你上位机发送的数据还没到达你就开始接受了所以没有收到
    用一个AfxMessageBox以后让程序停了一会,数据送达以后你再去接受就收到了
    要解决这个问题,一般是用的循环接受。判断接受缓冲有没有数据,有的话就读取数据。没有就继续循环(sleep个几百毫秒)然后再接受。避免cpu使用率过高
      

  4.   


    int nRet = 0;
    while(nRet == 0)
    {
        nRet = Receive(buf,34816);
        Sleep(20);
    }