10004错误!!
大家帮忙看看我的程序,为什么总是出现10004错误啊!!
谢谢了!!高分送英雄!
client socket closed or error:10054
GetCliReqThread()[1664] exit....error line=181
client socket closed or error:10004
ProcCliReqThread() exit [1800]....error line =71
client socket closed or error:10004
ProcCliReqThread() exit [1668]....error line =71
ProcCliReqThread() exit [1668]....error line =71
client socket closed or error:10004
ProcCliReqThread() exit [1668]....error line =71
client socket closed or error:10004
client socket closed or error:10004
ProcCliReqThread() exit [1720]....error line =71
ProcCliReqThread() exit [1720]....error line =71
client socket closed or error:10004
ProcCliReqThread() exit [1752]....error line =71
DWORD WINAPI ProcCliReqThread(LPVOID lpParam)
{
SOCKET cli_socket, /* 客户端SOCKET */
pro_socket; /* Proxy socket*/
int n; /* 接受到的或发送的数据的字节数*/
char msg[MSG_SIZE]; /* 缓冲区*/
int errorno, nLeft, idx;
//debug only
int errcode;
CRITICAL_SECTION csprosock;
CRITICAL_SECTION csclisock;
tClientIP ClientIP;
ClientIP = *((tClientIP *)lpParam);
cli_socket = ClientIP.cli_socket;
pro_socket = ClientIP.pro_socket;
csprosock = *ClientIP.csprosock;
csclisock = *ClientIP.csclisock;
while(1)
{
/* 从代理服务器接收消息*/
ZeroMemory(msg,sizeof(msg));
EnterCriticalSection(&csprosock);
n = recv(pro_socket,msg,MSG_SIZE,0);
LeaveCriticalSection(&csprosock);
if( n > 0){
printf("[%d]:S[%-16s:%-5d] << P[%-16s:%-5d] [%d]\n",
GetCurrentThreadId(),server_addr,server_port,proxy_addr,proxy_port,n);
}
else if(n == 0) {
errcode = 67;
break;
}
else if(n == SOCKET_ERROR){
errcode = 71;
errorno = WSAGetLastError();
printf("client socket closed or error:%d\n",errorno);
break;
}
/* 返回数据给客户端 */
nLeft = n;
idx = 0;
while(nLeft > 0)
{
EnterCriticalSection(&csclisock);
n = send(cli_socket,&msg[idx],nLeft,0);
LeaveCriticalSection(&csclisock);
if( n > 0){
printf("[%d]:C[%-16s:%-5d] << S[%-16s:%-5d] [%d]\n",
GetCurrentThreadId(),ClientIP.ip,ClientIP.port,server_addr,server_port,n);
}
else if(n == SOCKET_ERROR){
errcode = 88;
errorno = WSAGetLastError();
printf("client socket closed or error:%d\n",errorno);
break;
}
nLeft -= n;
}
if(n == SOCKET_ERROR){
errcode = 96;
errorno = WSAGetLastError();
printf("client socket closed or error:%d\n",errorno);
break;
}
}
printf("ProcCliReqThread() exit [%d]....error line =%d\n",GetCurrentThreadId(),errcode);
return 1;
}