int ResetClientSocket()
{
if(m_sockClient != INVALID_SOCKET) //连接断开之后,重新连接必须释放原资源
{
closesocket(m_sockClient);
m_sockClient = INVALID_SOCKET;
}
CString errInfo;
unsigned long nIpAdr;
if((ip = inet_addr(m_pSendMsgServer)) == INADDR_NONE){
errInfo = "服务器地址解析有误!";
LogDebug(errInfo);
}
struct sockaddr_in sdSrvAddr;
memset(&sdSrvAddr,0,sizeof(sockaddr_in));
sdSrvAddr.sin_family = AF_INET;
sdSrvAddr.sin_addr.S_un.S_addr = nIpAdr;
sdSrvAddr.sin_port = htons(m_nSendMsgPort);
int _iDontLinger = 0;
int nOptError = setsockopt(m_sockClient,SOL_SOCKET,SO_DONTLINGER,(const char*)&_iDontLinger,sizeof(int)); //连接断开之后,调用closesocket之后立即释放资源
if(nOptError == SOCKET_ERROR)
{
nOptError = WSAGetLastError();
errInfo.Format("设置套接字失败,错误代码:%d",nOptError);
}
if((m_sockClient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == INVALID_SOCKET){
nOptError = WSAGetLastError();
errInfo.Format("创建套接字失败,错误代码:%d",nOptError);
return 0;
}
//建立和服务器的连接
if(connect(m_sockClient,(sockaddr*)&sdSrvAddr,sizeof(srvAddr)) == SOCKET_ERROR){
nOptError = WSAGetLastError();
errInfo.Format("建立连接失败,错误代码:%d",nOptError);
return 0;
}else
{
LogDebug("连接中断,重新获取连接成功!");
}
return 1;
}