CAsyncSocket::Connect(LPCTSTR lpszHostAddress, UINT nHostPort)返回值一直是0?
MFC编写聊天程序,在Client进行连接时,使用CAsyncSocket::Connect(LPCTSTRlpszHostAddress,UINTnHostPort);...
MFC编写聊天程序,在Client进行连接时,使用CAsyncSocket::Connect(LPCTSTR lpszHostAddress, UINT nHostPort);无论连接成功与否总是返回0;请问 我如何得到诸如WSANOTINITIALISED ...的值?
如果我连接成功的话,GetLastError会返回什么数值呢?现在无论连接成功还是失败,我的返回值都是WSAEWOULDBLOCK。无比纠结中。 展开
如果我连接成功的话,GetLastError会返回什么数值呢?现在无论连接成功还是失败,我的返回值都是WSAEWOULDBLOCK。无比纠结中。 展开
1个回答
展开全部
CAsyncSocket::Connect()成功了就返回1,失败就返回0.
如果返回0,你马上再调用GetLastError(),GetLastError()会返回类似WSANOTINITIALISED 的值。
如果连接成功,GetLastError()会返回0.返回WSAEWOULDBLOCK说明没成功。
这里有篇博客解释了为什么有产生WSAEWOULDBLOCK错误:http://blog.csdn.net/strikebone/archive/2007/08/30/1765839.aspx
博客里提到的解决办法是处理FD_WRITE消息,但如果你是用MFC,更简单的办法是重载CAsyncSocket::OnSend()方法,在这个函数里发送数据。
给你找了这么多资料,给我多加些分吧。
如果返回0,你马上再调用GetLastError(),GetLastError()会返回类似WSANOTINITIALISED 的值。
如果连接成功,GetLastError()会返回0.返回WSAEWOULDBLOCK说明没成功。
这里有篇博客解释了为什么有产生WSAEWOULDBLOCK错误:http://blog.csdn.net/strikebone/archive/2007/08/30/1765839.aspx
博客里提到的解决办法是处理FD_WRITE消息,但如果你是用MFC,更简单的办法是重载CAsyncSocket::OnSend()方法,在这个函数里发送数据。
给你找了这么多资料,给我多加些分吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询