社区
网络编程
帖子详情
使用继承自CAsyncSocket的类做的通讯DLL控件,只要Create一个Socket就会提示"Debug Assertion Failed"的错误???
sundy26
2004-08-03 09:08:03
我知道CAsyncSocket是MFC进行了封装,添加了一个隐形的窗口类,但是我也看到有的程序直接用MFC封装的CSocket类也可以做成DLL形式呀?
这有什么不同吗?
PS:在EXE程序测试一起正常。
...全文
277
15
打赏
收藏
使用继承自CAsyncSocket的类做的通讯DLL控件,只要Create一个Socket就会提示"Debug Assertion Failed"的错误???
我知道CAsyncSocket是MFC进行了封装,添加了一个隐形的窗口类,但是我也看到有的程序直接用MFC封装的CSocket类也可以做成DLL形式呀? 这有什么不同吗? PS:在EXE程序测试一起正常。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
simonjp
2004-09-06
打赏
举报
回复
其实,你用CSocket就可以了,你GetLastError看看,就是关于阻塞的错误
sundy26
2004-08-04
打赏
举报
回复
没有办法,只好使用原始套接字从新写了一个。
结帖
sundy26
2004-08-03
打赏
举报
回复
我随便新建一个MFC DLL的工程,并且选择添加Socket的支持。
新建一个类CMySocket继承自CAsyncSocket,
然后在CSocketClientApp类头文件
CMySocket m_mySocket;
同样在函数中:
void CSocketClientApp::InitSocketConnect(char * strIP, int connectPort)
{
m_mySocket.Create();//只要调用了这一句就会出错。
}
特别强调:
1、在Exe程序中都不会有问题。
2、也能正常连接和收发数据,但退出的时候或者再次连接的时候会出现"Debug Assertion Failed"的错误.
出步判断应该是CAsyncSocket类做成DLL,或者Socket通讯在DLL有什么特别的吗?
sundy26
2004-08-03
打赏
举报
回复
不是ATL的,就是一个基于MFC 的DLL
/*************** DLL和Socket初始化 *********************/
BEGIN_MESSAGE_MAP(CSocketClientApp, CWinApp)
END_MESSAGE_MAP()
// CSocketClientApp 构造
CSocketClientApp::CSocketClientApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CSocketClientApp 对象
CSocketClientApp theApp;
// CSocketClientApp 初始化
BOOL CSocketClientApp::InitInstance()
{
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
return TRUE;
}
/********************************************
函数名称:接口函数,Connect
功能:初始化端口侦听
参数:listenPort:侦听端口
是否连接回调函数定义:
typedef void (*CDATACALLBACK)(PackHead *ph, char *buf) ; //回调函数定义
参数:lpCallBack:回调函数
数据接收回调函数定义:
typedef void (*CISCONNECT)(PackHead *ph, char *buf) ; //回调函数定义
参数:lpDataCallBack:
返回:0:OK,else error
*********************************************/
extern "C" _declspec(dllexport) void Connect(char *strIP,int connectPort)
{
//AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
theApp.InitSocketConnect(strIP,connectPort);
}
void CSocketClientApp::InitSocketConnect(char * strIP, int connectPort)
{
myclient.Close();
int IsConnect = -1;
IsConnect = myclient.InitClientRequest(strIP,connectPort);
if(IsConnect==0)
{
myclient.Bind(3,&myctrl);
myctrl.SetComm(&myclient);
}
}
danielzhu
2004-08-03
打赏
举报
回复
你的DLL是不是ATL的?讲清楚一点,然后,你怎么初始化的?
sundy26
2004-08-03
打赏
举报
回复
有没有人告诉我使用CAsyncSocket能不能做成DLL形式??
sundy26
2004-08-03
打赏
举报
回复
>>>对了,初始化工作应该在应用此DLL的主程序中初始化,而不要将初始代码添加在DLL的InitInstance中。
那为什么创建DLL工程的时候,可以添加Socket支持??
现在问题在于调试到Create发现并不会出错,只有退出程序时才报错,但我将Create Socket这一段代码屏蔽就没有问题。
我的工程是VC7.01的应该不存在打补丁的问题。
sundy26
2004-08-03
打赏
举报
回复
我连接后直接退出程序会出现上面的错误,但如果我在退出程序之前
先调用Close函数关闭Socket就不会有这个错误?
Why?
gracezhu
2004-08-03
打赏
举报
回复
初始化SOCKET库,在调用Create失败后,调用GetLastError获取返回值
DentistryDoctor
2004-08-03
打赏
举报
回复
对了,初始化工作应该在应用此DLL的主程序中初始化,而不要将初始代码添加在DLL的InitInstance中。
DentistryDoctor
2004-08-03
打赏
举报
回复
既然CAsyncSocket没问题,那问题可能出现你的类上面了,至于CAsyncSocket与CSocket有什么区别,VC++带得有MFC的源代码,自己读读吧。
sundy26
2004-08-03
打赏
举报
回复
添加了 AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
问题还是一样
sundy26
2004-08-03
打赏
举报
回复
有初始化的:
BOOL CSocketSeverDLLApp::InitInstance()
{
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
return TRUE;
}
程序里面没有用到多线程。
gracezhu
2004-08-03
打赏
举报
回复
CAsyncSocket在线程中会报这个异常,参考KB
PRB: Assertion Failed on Line 837 - Sockcore.cpp
Q140527
FIX: Unhandled Exception Using MFC Sockets in Visual C++ 6.0
Q193101
另外,在MFC DLL下需要添加AFX_MANAGE_STATE(AfxGetStaticModuleState( ))宏
whale
2004-08-03
打赏
举报
回复
在DllMain中调用AfxSocketInit初始化Windows Sockets.
利用
CA
sync
Socket
类
实现
Socket
编程
利用
CA
sync
Socket
类
实现
Socket
编程的
一个
带讲解的实例
MFC下
使用
CA
sync
Socket
类
建立UDP客户端与服务器.zip
MFC下
使用
CA
sync
Socket
类
建立UDP客户端与服务器, 发送端接收端都已封装好, 可直接借鉴
使用
Socket
,
CA
sync
Socket
,C
Socket
介绍
Socket
,
CA
sync
Socket
,C
Socket
介绍对于编程人员很有用处,也是一种总结
使用
CA
sync
Socket
类
实现异步网络通信
使用
CA
sync
Socket
类
实现异步网络通信
MFC中的
Socket
类
MFC中的
Socket
类
。这里先来考虑
一个
只有客户端向服务方发信息的单向通信,并且也只有客户端
会
主动提出断开连接的最简单的情形(相反过程的原理是一样的)。...这三个套接字对象对应三个
Socket
类
,都
继承
自
CA
sync
Socket
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章