我写了一个windows窗体应用程序(c++),现在想实现在后台用socket接受消息,并在界面做响应修改的功能

请问应该如何实现?我想到的是在主函数使用多线程,那么负责接受消息的后台线程怎么和form1收发消息呢?还是有其他的方法?... 请问应该如何实现?我想到的是在主函数使用多线程,那么负责接受消息的后台线程怎么和form1收发消息呢?还是有其他的方法? 展开
 我来答
闲来无事id
2013-10-17 · TA获得超过108个赞
知道答主
回答量:71
采纳率:0%
帮助的人:80.2万
展开全部
  1. 首先socket肯定是一个单独的类,和界面没有任何关系。

  2. socket类提供public发送接口供对象使用。

  3. 在socket内部每个socket接收操作起一个线程,进行阻塞接收(阻塞式socket。其他类型socket比如完成端口按照对应机制实现)。

  4. 当每个线程收到数据后,通知界面类来处理。至于通知方式,最简单的是回调。复杂点的用消息(不一定是windows消息)。

  5. 回调被调用后进行数据更新。

追问
3的话,我的想法是在一个线程里
SOCKET sock_con = accept(/**/);
之后再开辟一个线程处理sock_con的数据交互,
Thread^ t1 = gcnew Thread(gcnew ThreadStart(/*----*/);我想通过创建新socket初始化传sock_cn,但是创建的新的socket类不能使用^ 托管,不知道怎么传递sock_con。
追答
就是这么做,这些我都是直接用api CreateThread或beginthreadEx来起线程。线程回调函数就可以传送指针。自己定义一个结构体把需要传递的数据全部打包,在堆上分配内存,之后把指针传过去就可以。用完后,新线程负责释放。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式