Socket 在对话框程序中总出错。??

rkt_dijkstra 2003-05-27 03:05:50
xxxx:: OnInitDialog()
{ m_Sockets.pAcceptSocket = &m_Server;
m_Sockets.pListenSocket = &Server;

AfxBeginThread(MyBeginServerThread,&m_Sockets);
AfxBeginThread(MyBeginClientThread,&m_Client);
}

UINT MyBeginServerThread(LPVOID Sockets)
{
MYSOCKETS* pSocket = (MYSOCKETS *) Sockets;
pSocket->pListenSocket->Create(6802,SOCK_STREAM,"192.168.0.2");
pSocket->pListenSocket->Bind(6801,"192.168.0.2");
pSocket->pListenSocket->Listen(5);
pSocket->pListenSocket->Accept(*(pSocket->pAcceptSocket));
pSocket->pListenSocket->Close();
return 0;
}
UINT MyBeginClientThread(LPVOID Socket)
{
CSocket* pSocket = (CSocket*) Socket;
pSocket->Create();
pSocket->Connect("192.168.0.2",6802);
return 0;
}

以上代码可以发送,也可以接收,但是,当程序退出时,总是提示有错误。而且是4次的错误提示。
请问如何正确推出程序。
...全文
43 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
windows_editor 2003-05-29
  • 打赏
  • 举报
回复
你还是在线程里面向主窗口发消息 然后在主窗口里面对SOCKET进行处理把
孤必有邻 2003-05-29
  • 打赏
  • 举报
回复
退出时出现Debug错误的原因,应该是线程强制结束时,系统对SOCKET进行处理,而窗口资源无效造成的。修改代码,试试让线程正常返回。
if(pSocket->pListenSocket->Accept(*(pSocket->pAcceptSocket))==SOCKET_ERROR)
return 0;
并在退出处理中加
listenSock.Close();
Sleep(1000);//具体调整
rkt_dijkstra 2003-05-28
  • 打赏
  • 举报
回复
我可以在RELEASE下运行,但是,最后退出时还是错误的提示。
rkt_dijkstra 2003-05-28
  • 打赏
  • 举报
回复
错误签名:
AppName: mddirct.exe AppVer: 1.0.0.1 ModName: mfc42.dll
ModVer: 6.0.8665.0 Offset: 00016eec


AppName: mddirct.exe AppVer: 1.0.0.1 ModName: mfc42.dll
ModVer: 6.0.8665.0 Offset: 00016eec
yqfu 2003-05-28
  • 打赏
  • 举报
回复
我是指你出错的代码段!DEBUG时一般可以知道
孤必有邻 2003-05-27
  • 打赏
  • 举报
回复
以上代码可以发送和接收,但必须是Debug模式,Release模式是不能正常工作的。
应用框架要重新设计,不要在线程中Create一个SOCKET(Release模式不允许)
yqfu 2003-05-27
  • 打赏
  • 举报
回复
把错误的具体位置贴出来
rkt_dijkstra 2003-05-27
  • 打赏
  • 举报
回复
有时是5次,XP OS,P4 CPU。

18,363

社区成员

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

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