关于socket连接的问题
我现在写了socket的类一个叫CServerSocket,一个叫CSocServer,我分别用这两个做了两个线程,然后绑定端口不一样。一个是8888,一个是9527,当我第一个的CServerSocket的连接的时候我的第二个没有接收,但是当我第二个connect时候第一个的accept却接收到了。这是怎么一会回事?
这个事第二个线程里的
while(1)
{
CSockServer SocketSrv;
//pMain->m_Flag--;
SocketSrv.Listen(); //这个里面有accept这个函数
if (!SocketSrv.Recevie())
{
AfxMessageBox("接收失败!请重新开始!");
return 0L;
}
//AfxMessageBox("监听一次!!!");
if(!SocketSrv.m_ClientInfo.IsEmpty())
{
pMain->SendFile(SocketSrv);
}
SocketSrv.Close();
//pMain->m_Flag++;
}
第一个线程里的
while(1)
{
SOCKET clientSocket = INVALID_SOCKET;
////////////////在这一步的时候我的另一个端口就是那个CSocServer类的connect时候,这个却接收了。。这是为什么?
clientSocket = accept(m_listenSocket, (struct sockaddr *)&clientSockaddr, &addrlen);
if(clientSocket == INVALID_SOCKET)
{
closesocket(m_listenSocket);
return 1;
}
send(clientSocket, szmsg, sizeof(pMainWnd->m_ValueExam), 0);
closesocket(clientSocket);
}
[解决办法]
以你发的代码来看,两个线程应该没什么冲突。
要么就是你编写的Listen()函数有问题,要么就是你设置协议族有问题。仔细检查这两方面。
[解决办法]
你把客户端服务器端做到一起了?服务器端须先启动listen监听,accept客户端的连接,客户端这个时候去connect连接服务器端
[解决办法]