Socket 反复连接时会失败,求原因
while(pcs->m_thexit)
{
Sleep(2000);
pcs->m_ConSerflg=FALSE;//与服务器连接失败或未连接上
try
{
if (!pcs->WinSockInit())
{
AfxMessageBox(_T("Socket 库初始化失败!"));
return FALSE;
}
pcs->m_ServerSocket = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
if (pcs->m_ServerSocket == INVALID_SOCKET)
{
lstxt="SOCKET创建失败,请重启.........";
return TRUE;
}
sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(9527);
server.sin_addr.s_addr = inet_addr("192.168.1.1");
/////////////////////////////////////////////////////////////
lircons=0;
while(pcs->m_thexit)
{
liconr=-1;
liconr=connect(pcs->m_ServerSocket, (struct sockaddr *)&server, sizeof(struct sockaddr));
if (liconr == SOCKET_ERROR )
{
pcs->is_rboot=TRUE;
memset(loginlog1,0,sizeof(loginlog1));
MultiByteToWideChar(CP_ACP, 0, "连接服务器失败,正在试图重新连接", -1, loginlog1, sizeof(loginlog1));
pcs->m_pWnd->PostMessage(WM_ADD_EDIT,(DWORD)0,(LPARAM)(LPCTSTR)loginlog1);
lircons++;
Sleep(3000);
if (lircons>=50)
{
pcs->StopServer();
Sleep(10000);
CString sysname;
sysname="wwatutstart.exe";
pcs->RestarSys(sysname);
TerminateProcess(GetCurrentProcess(),0);
return TRUE;
}
}
else
{
break;
}
}
pcs->is_rboot=TRUE;
GetLocalTime(&pcs->is_discontime);
iRet = recv(pcs->m_ServerSocket, (char *)szBuf, Recv_BUF_SIZE, 0);
if (iRet>0)
{
......................
}
else
{
closesocket(pcs->m_ServerSocket);
WSACleanup();
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("clent__Workheahtsend:%s"),e.ErrorMessage());
pcs->wApp->writelogs(errormessage);
}
}
我这里,采用while来不断连接,因为,该程序启动后只要不断电,就会一直运行,如果网络断了,就自动连接服务器,我测试过很多次,如果连接的次数多了的话,在执行connect(pcs->m_ServerSocket, (struct sockaddr *)&server, sizeof(struct sockaddr));时,就会卡起,求原因。。。。。。。。。。。。。。。
...全文
相关推荐
c语言socket编程 与服务器长连接的客户端程序
你需要为可能出现的错误(如网络中断、连接失败等)编写合适的错误处理代码。通过上述步骤,我们可以构建一个基本的C语言socket编程的客户端程序,并实现与服务器的长连接。
socket 长连接实例
标题中的“长连接”是指在网络通信中,一旦客户端和服务器之间建立连接后,双方保持连接状态,可以进行多次数据交换,而不需要反复进行三次握手建立新的连接。
演示ClientSocket反复连接进程句柄数不变
**使用异步模式**:使用非阻塞的I/O模型,这样即使连接失败,也不会阻塞其他操作,降低句柄消耗。6. **优化资源释放**:在应用程序退出或不再需要连接时,确保所有的网络资源被正确释放。
服务端不存在或没开启时,反复尝试连接服务端,也能稳定工作的clientsocket
标题中的“服务端不存在或没开启时,反复尝试连接服务端,也能稳定工作的clientsocket”指的是一种客户端Socket编程的优化策略,它涉及到网络通信中客户端如何处理与服务端的连接问题,尤其是在服务端不可用时
SOCKET通信调试工具
**错误处理与调试**:调试过程中,常见的问题包括连接失败、数据丢失、超时等。


网络编程
