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次的错误提示。
请问如何正确推出程序。
...全文
9 点赞 收藏 8
写回复
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。
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7880

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告