>pPair- >IsProxy_ServerClosed=TRUE; ::SetEvent(pPar- >User_SvrOK); return -1; } pPar- >pPair- >proxy_server=conn_socket; pPar- >pPair- >IsProxy_ServerClosed=FALSE; ::SetEvent(pPar- >User_SvrOK); // cook up a string to send while(!pPar- >pPair- >IsProxy_ServerClosed &&!pPar- >pPair- >IsUser_ProxyClosed) { retval = recv(conn_socket,Buffer,sizeof (Buffer),0 ); if (retval == SOCKET_ERROR ) { fprintf(stderr,"recv() failed: error %d\n",WSAGetLastError()); closesocket(conn_socket); pPar- >pPair- >IsProxy_ServerClosed=TRUE; break; } Len=retval; if (retval == 0) { printf("Server closed connection\n"); closesocket(conn_socket); pPar- >pPair- >IsProxy_ServerClosed=TRUE; break; }
retval = send(pPar- >pPair- >user_proxy,Buffer,Len,0); if (retval == SOCKET_ERROR) { fprintf(stderr,"send() failed: error %d\n",WSAGetLastError()); closesocket(pPar- >pPair- >user_proxy); pPar- >pPair- >IsUser_ProxyClosed=TRUE; break; } #ifdef _DEBUG Buffer[Len]=0; printf("Received %d bytes, data [%s] from server\n",retval,Buffer); #endif } if(pPar- >pPair- >IsProxy_ServerClosed==FALSE) { closesocket(pPar- >pPair- >proxy_server); pPar- >pPair- >IsProxy_ServerClosed=TRUE; } if(pPar- >pPair- >IsUser_ProxyClosed==FALSE) {closesocket(pPar- >pPair- >user_proxy); pPar- >pPair- >IsUser_ProxyClosed=TRUE; } return 1; }
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0;
// 初始化SOCKET if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // 错误处理 cerr < < _T("Fatal Error: MFC initialization failed") < < endl; nRetCode = 1; } else { // 主程序开始. StartServer(); while(1) if(getchar()=='q') break; CloseServer(); }
return nRetCode; } 上一页 [1] [2] |