我在做网络通讯时遇到这样一个问题,上位机每次接收的时候都要加上AfxMessageBox("Yes");这条语句才能接收到数据,而不加就接收不到,这是为什么?我该怎么做?请高手指正。
接收函数是这样的:
char buf[17][2048];
AfxMessageBox("Yes");
memset(buf,0,34816);
int Count = Receive(buf,34816);
接收函数是这样的:
char buf[17][2048];
AfxMessageBox("Yes");
memset(buf,0,34816);
int Count = Receive(buf,34816);
socket?
int Count = Receive(buf,34816);或许你写在一个循环中,AfxMessageBox("Yes");没有这个语句,反复循环时,把数据毁掉了。有这个语句暂停了那么一下,你就监视到了。
用一个AfxMessageBox以后让程序停了一会,数据送达以后你再去接受就收到了
要解决这个问题,一般是用的循环接受。判断接受缓冲有没有数据,有的话就读取数据。没有就继续循环(sleep个几百毫秒)然后再接受。避免cpu使用率过高
int nRet = 0;
while(nRet == 0)
{
nRet = Receive(buf,34816);
Sleep(20);
}