mfc socket连接有问题,请高手解答!
我正在做一个简单的聊天室软件,socket方面是继承csocket类,tcp协议。服务端和客户端在本机测试的时候没有问题,连接正常。但是一旦和同寝室(同一路由器的局域网)进行测试的时候,会出现问题。
连接成功的条件是:
我开着服务端和客户端,输入对方ip,点击连接,我会连接到我的服务端上,然后断开,再次连接(仍是对方ip),就能连接上对方,并且一切正常。其他时候连接他人服务器会在connct失败。
不知道为何是这样?请高手们帮忙。
服务端
void CChattyNewDlg::OnButtonConn()
{
m_pSocket = new CCSocket(this); //CCSocket从CSocket派生
if (!m_pSocket->Create())
{
delete m_pSocket;
m_pSocket =NULL;
AfxMessageBox("套接字创建失败!");
return;
}
if(!m_pSocket->Connect(m_ip,m_port)) //这一步的问题
{
delete m_pSocket;
m_pSocket = NULL;
AfxMessageBox("无法连接!");
return;
} socket MFC
[解决办法]
Nonzero if the function is successful; otherwise 0, and a specific error code can be retrieved by calling GetLastError. If this indicates an error code of WSAEWOULDBLOCK, and your application is using the overridable callbacks, your application will receive an OnConnect message when the connect operation is complete. The following errors apply to this member function:
msdn上,你这个是异步套接字,可能不会马上返回,你要重写onconnect事件来表明是否链接。
[解决办法]
如果是异步的connect会先返回WOULDBLOCK,你收到FD_CONNECT才可以判断是否成功连接,这有socket例子,你看一下:
http://download.csdn.net/detail/geoff08zhang/4571358