求ATL创建的COM组件内实现TCP/IP通讯的思路

时间:2022-12-02 23:16:25
大家好,我用ATL建了个COM组件,要给上层应用调用,我这个COM内想实现跟远程一个EXE程序通讯,EXE作为服务端监听,COM组

件内使用阻塞套接字,并创建一个线程接收数据。请问我能否在COM一被调用时就创建SOCKET与EXE通讯,然后立马启动一个线

程来接收数据?然后在COM被销毁的时候关闭SOCKET并退出线程,这样就不会造成上层应用卡住之类的麻烦问题。谁能给个好的

思路

6 个解决方案

#1


可以通过回调的方式来解决问题.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.

#2


通迅与COM也没有什么必然的关系,COM只是对象与方法的封装.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.

#3


tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程 

线程里面
while(线程启用标志)
{
  //接收数据
  //如果有数据,拆包,然后fire_相应事件
}

你们说的回调是不是这个意思?

#4


另外问下,我写的COM组件 注册成功后在我机器上面用ActiveX Control Test Container 看不到  但是在别人机器上面看的到 这个是怎么回事?

#5


引用 3 楼 start4u 的回复:
tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程

 线程里面
 while(线程启用标志)
 {
   //接收数据
   //如果有数据,拆包,然后fire_相应事件
 }

 你们说的回调是不是这个意思?

对,当然也可以在线程中回调

#6


应用程序调用com接口异步操作,就不会阻塞

#1


可以通过回调的方式来解决问题.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.

#2


通迅与COM也没有什么必然的关系,COM只是对象与方法的封装.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.

#3


tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程 

线程里面
while(线程启用标志)
{
  //接收数据
  //如果有数据,拆包,然后fire_相应事件
}

你们说的回调是不是这个意思?

#4


另外问下,我写的COM组件 注册成功后在我机器上面用ActiveX Control Test Container 看不到  但是在别人机器上面看的到 这个是怎么回事?

#5


引用 3 楼 start4u 的回复:
tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程

 线程里面
 while(线程启用标志)
 {
   //接收数据
   //如果有数据,拆包,然后fire_相应事件
 }

 你们说的回调是不是这个意思?

对,当然也可以在线程中回调

#6


应用程序调用com接口异步操作,就不会阻塞