Socket的connect问题.

bootmen 2001-08-20 08:46:19
步骤如下
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()的实现有关呢?
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bootmen 2001-08-21
  • 打赏
  • 举报
回复
谢谢大家,我已经解决了。是在OnAccept中出错了。我把OnAccept(int nErrorcode)中的nErrorCode理解错了,不过,我还是不明白这个参数是干什么的,能给我讲讲吗?
gzlucky 2001-08-20
  • 打赏
  • 举报
回复
在Server端运行起来后,用netstat -a来查看你的5031端口是否处于LISTENING.
gzlucky 2001-08-20
  • 打赏
  • 举报
回复
那你跟踪一下OnAccept有没有出错。
bootmen 2001-08-20
  • 打赏
  • 举报
回复
还有一点没有说道,TCPPORT是在头文件中定义的,即:
#define TCPPORT 5031

另外,在客户端,程序调用了OnConnect(int nErrorCode)函数,并且,nErrorCode是为0的。

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧