Socket的connect问题.
步骤如下
1.class CClientSocket:public CAsyncSocket{...};
2.CClientSocket * m_pClientSocket;
3.m_pClientSocket=new CClientSocket(...);
4.if(!m_pClientSocket->Create())
{
AfxMessageBox("m_pClientSocket->Create() failed");
return;
}//一切正常
5.if(!m_pClientSocket->Connect(m_sHostName,::htons(TCPPORT)))
{
AfxMessageBox("m_pClientSocket->Connect(m_sHostName,TCPPORT);failed");
return;
}//出错,调用m_pClientSocket->GetLastError()得到的返回值是WSAECONNREFUSED
我看了msdn,上面说的是服务器强制性关闭了连接请求。但是我的服务器的设置是这样的,
1、class CTListenSocket:public CAsyncSocket{...};//监听用的套接子类。
class CTTransSocket:public CAsyncSocekt{...};//传输用的套接子类。
2、CTListenSocket m_TcpLSocket;//监听用的套接子。
CTTransSocket m_TcpTSocet;//传输用的套接子。
3、m_TcpLSocket.Create(::htons(TCPPORT),SOCK_STREAM,FD_ACCEPT,NULL);
m_TcpLSocket.Listen(2);
4、在OnAccept(int nErrorCode)中。
{
.......
m_TcpLSocket.accept(m_TcpTSocket);
.......
}
其中,在第3步中,我追踪了create和listen的返回值,都是非0数,说明服务器端设置是正确的。但是为什么会在客户端出现这个错误呢?是不是和重载的虚函数:OnAccept()和OnConnect()的实现有关呢?