主题:[讨论]CSocket的一个无法解释的问题
以下是我在响应OnReceive消息时的两种处理方法:
void OnReceive(int nErrorCode)//1
{
int k;
char j[100];
do
{
k+=recv(this->m_hSocket,j+k, sizeof(j)/2 ,0);
}while(k<sizeof(j));
Send(j,sizeof(j));
}
void OnReceive(int nErrorCode)//2
{
char j[100];
recv(this->m_hSocket,j, sizeof(j) ,0);
Send(j,sizeof(j));
}
从上面代码来看,应该很清楚一旦OnReceive促发,两个连接的套接字将会在死循环中,可是第一种在不确定次数循环后会断掉,不会阻塞,而第二种方法才会无休止的循环下去,请问谁能解释这个问题?
我问了很多人都无法解释,希望这个论坛不要然我失望!
void OnReceive(int nErrorCode)//1
{
int k;
char j[100];
do
{
k+=recv(this->m_hSocket,j+k, sizeof(j)/2 ,0);
}while(k<sizeof(j));
Send(j,sizeof(j));
}
void OnReceive(int nErrorCode)//2
{
char j[100];
recv(this->m_hSocket,j, sizeof(j) ,0);
Send(j,sizeof(j));
}
从上面代码来看,应该很清楚一旦OnReceive促发,两个连接的套接字将会在死循环中,可是第一种在不确定次数循环后会断掉,不会阻塞,而第二种方法才会无休止的循环下去,请问谁能解释这个问题?
我问了很多人都无法解释,希望这个论坛不要然我失望!