CSocket::OnReceive()的问题
我对CSocket类做了一个实验,在相应OnReceive()的函数时,用了两种不同的方法,但是意思是一样的,却出现了完全不同的效果,用TCP协议。
void CMySocket::OnReceive(int nErrorCode)//1
{
char j[100];
Receive(j,sizeof(j)/2);
Receive(j,sizeof(j)/2);
Send(j,sizeof(j));
}
void CMySocket::OnReceive(int nErrorCode)//2
{
char j[100];
Receive(j,sizeof(j));
Send(j,sizeof(j));
}
先创建一个Socket监听,再用创建一个Socket连接,连接的后马上发送一次数据。
大家看得出,这样子会让程序处于一个死循环的状态,可是实际上第一种方法,在循环不确定次数后,会断掉,第二种方法才可以无休止的循环下去。
这个情况是我在编程的一个需要时发现的,我需要接受一个数据包的前一部分,再根据前一个部分再来接收后一部分,再发送相关数据给对方,然后就出现了以上问题,我是在一台机器上用“127.0.0.1”的地址试的,希望大家能仔细的帮帮我。