马上要交货。可。。。急。。在线等,请帮忙。

ffllyy 2003-12-28 09:53:33
我从CSocket继承了一个类,类中包括一个CMainFrame* m_pMainFrame;对象和virtual void OnReceive(int nErrorCode);virtual void OnClose(int nErrorCode);两个函数再没有别的了。
然后在CMainFrame里面这样用的:
MainFrm.h
static CClient* m_pSocket;
m_pSocket=new CClient(this);
MainFrm.cpp
CClient* CMainFrame::ConnectServer(CClient* pSocket)
{
if (!pSocket->Create())
{
return NULL;
}
if (!pSocket->Connect("IP地址", 端口号))
{
return NULL;
}
return pSocket;
}

//连接
BOOL CMainFrame::Conection()
{
if (m_pSocket->m_hSocket!=INVALID_SOCKET)
{
TRACE("\nCLOSE m_pSocket start\n");
//这个地方出错,有时候关闭正确,有时候就会现错,是不是我的用法有问题?
m_pSocket->Close();//错误
TRACE("\nCLOSE m_pSocket end\n");
}

if(ConnectServer(m_pSocket)==NULL)
{
MessageBox("连接失败!");
return FALSE;
}else
{
MessageBox("连接成功!");
return TRUE;
}
}
在别的对话框中点击按钮调用Conection()
CDialogtest::OnButton1()
{
pFrame->Conection();
}
有时候就会出错,各位大哥,这是为什么啊。是不是因为m_pSocket的连接已经断开了我再次断开它出的问题?有什么办法可以确确实实的判断m_pSocket到底关闭连接没啊?急请各位大侠帮帮忙?
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasic2002 2003-12-28
  • 打赏
  • 举报
回复
其实判断一个套节子是否关闭很简单,只用调用一个socket的函数判断其出错类型就可以,比如你可以在close一个socket之后,send这个套节子,然后检查出错类型,基本可以搞定
ffllyy 2003-12-28
  • 打赏
  • 举报
回复
来人啊。
ffllyy 2003-12-28
  • 打赏
  • 举报
回复
不好意思刚才网络慢没及时来。
m_pSocket->Close();这个错误
好像是因为连接已经断开了,再次关闭连接出的问题。
jimsleon 2003-12-28
  • 打赏
  • 举报
回复
出错的时候是在什么时候?什么地方呢?
ffllyy 2003-12-28
  • 打赏
  • 举报
回复
有人在吗?帮帮忙
lhua_1225 2003-12-28
  • 打赏
  • 举报
回复
初始化m_pSocket = INVALID_SOCKET试试,关闭后同样操作

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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