怎样让ATL实现的COM服务器与多个客户端连接? 小弟做的COM服务器需要与两个客户端连接,一个是IE,一个是DLL库,现在需要实现的功能是IE发送消息到COM,COM再转发到DLL,通过IDispatch我只能实现IE发送消息到COM,COM怎么样发送到DLL呢?IE和DLL都连接到COM了,但连接表里只有一个连接,我的感觉是他们分别连接了这个COM的两个对象而已,所以连接表里只有一个连接。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的感觉是对的,有两个组件存在。你可以把你的组件设置成SINGLETON模式,组件只会创建一个,所有客户端共享同一个组件 恩,用jamesshooo兄的方法,单实例模式 我看了,我本来就是Single模式的class ATL_NO_VTABLE CCmdCtrl : public CComObjectRootEx<CComSingleThreadModel>, ...还是不行呢,是不是有其他原因呢?我在事件接口中查看连接数,如下nConnections每次都为1int nConnections = m_vec.GetSize();for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++){ ...} 你这是单线程套间,不是单实例模式,在类里面添加下面的一句宏就是单实例public: DECLARE_CLASSFACTORY_SINGLETON(CCmdCtrl) 果然如此,搞定了,多谢jamesshooo了,一会儿就给分哈。还有个问题,我能不能从for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++){ pT->Lock(); CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex); pT->Unlock(); IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p); ...}中获取的pDispatch判断到底当前是要调用哪个客户端的函数呢?该怎么判读呢? 果然如此,搞定了,多谢jamesshooo了,一会儿就给分哈。还有个问题,我能不能从for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++){ pT->Lock(); CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex); pT->Unlock(); IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p); ...}中获取的pDispatch判断到底当前是要调用哪个客户端的函数呢?该怎么判读呢? 自己加了个链表,先将就用,把BOSS忽悠过了再说,没时间研究了。 网站名称: 搞笑图片|搞笑动漫|搞笑动画网站地址: http://www.iptry.cn网站简介: 专注于搞笑图片、搞笑动漫、搞笑动画的收集,力争做最好的搞笑类网站! 一排单选按钮,怎么获取到哪个被选中了? 游戏入门,求助!! 组合框控件点击箭头不能列出所有可选项 IOCP完成端口 WSAEnumNetworkEvents 函数 10038 错误 msdn2008查询问题 是一个关于菜单的小问题 modem和串口通讯丢数据什么原因? 怎样获得主窗口指针? vc1.52 哪里可下载? 不可思议!!!!不可思议,一个关于数据采集的源程序费解!!!<仅有的171分都给你!!!> 错误: 未能完成操作。不支持此接口(VS2005/扩展性/共享的外接程序/MyAddin1/MyAddin1Setup) 麻烦达人介绍下com atl wtl及相互间 的关系
class ATL_NO_VTABLE CCmdCtrl :
public CComObjectRootEx<CComSingleThreadModel>,
...
还是不行呢,是不是有其他原因呢?我在事件接口中查看连接数,如下nConnections每次都为1
int nConnections = m_vec.GetSize();
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
...
}
public:
DECLARE_CLASSFACTORY_SINGLETON(CCmdCtrl)
还有个问题,我能不能从
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
...
}
中获取的pDispatch判断到底当前是要调用哪个客户端的函数呢?该怎么判读呢?
还有个问题,我能不能从
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
...
}
中获取的pDispatch判断到底当前是要调用哪个客户端的函数呢?该怎么判读呢?
网站地址: http://www.iptry.cn
网站简介: 专注于搞笑图片、搞笑动漫、搞笑动画的收集,力争做最好的搞笑类网站!