我写了一个windows窗体应用程序(c++),现在想实现在后台用socket接受消息,并在界面做响应修改的功能
请问应该如何实现?我想到的是在主函数使用多线程,那么负责接受消息的后台线程怎么和form1收发消息呢?还是有其他的方法?...
请问应该如何实现?我想到的是在主函数使用多线程,那么负责接受消息的后台线程怎么和form1收发消息呢?还是有其他的方法?
展开
1个回答
展开全部
首先socket肯定是一个单独的类,和界面没有任何关系。
socket类提供public发送接口供对象使用。
在socket内部每个socket接收操作起一个线程,进行阻塞接收(阻塞式socket。其他类型socket比如完成端口按照对应机制实现)。
当每个线程收到数据后,通知界面类来处理。至于通知方式,最简单的是回调。复杂点的用消息(不一定是windows消息)。
回调被调用后进行数据更新。
追问
3的话,我的想法是在一个线程里
SOCKET sock_con = accept(/**/);
之后再开辟一个线程处理sock_con的数据交互,
Thread^ t1 = gcnew Thread(gcnew ThreadStart(/*----*/);我想通过创建新socket初始化传sock_cn,但是创建的新的socket类不能使用^ 托管,不知道怎么传递sock_con。
追答
就是这么做,这些我都是直接用api CreateThread或beginthreadEx来起线程。线程回调函数就可以传送指针。自己定义一个结构体把需要传递的数据全部打包,在堆上分配内存,之后把指针传过去就可以。用完后,新线程负责释放。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询