夜未眠,请高手指点winsock
从客户端发数据到服务器端,如
if(OnSocketConnect(m_SockIp))
{
//AfxMessageBox(info.m_cCode);
Sleep(200);
iErrorCode = send(m_hSocket, (char*)&info, sizeof(WARNINGINFO), NO_FLAGS);
if( iErrorCode <= 0 ) return FALSE;
sends ++;
}
OnSocketClose();
因为可能会联到几个服务器端发数据,所以我在for{}里面就采用上面代码先联接
发送完了再close
服务器端
OnClientClose(){
if( m_aClientSocket == INVALID_SOCKET) return 0L;
iErrorCode = closesocket(m_aClientSocket);
m_aClientSocket = INVALID_SOCKET;
...}
1:我出现的问题是第一次联接-发送-关闭之后第二次就好像是假联接了
客户端显示联接发送正常,但服务器端没有反应
反复4-6次联接-发送-关闭之后就报告联接失败.
如果我在客户端发送之后不close()的话可以正常反应,程序退出的时候
服务器端会触发客户端发送次数的OnClientClose()
这样关闭之后再次启动客户端就和上1:情况一样
前段时间也做了个类似的,只不过是服务器向客户端发消息,好像都是正常的
夜未眠,请大家教点