繁体   English   中英

如何制作从 TCP 套接字接收数据的 GTK 应用程序

[英]How to make a GTK application that receives data from a TCP socket

我正在构建一个 GUI(使用 C),它从另一个通过 TCP 套接字发送数据的应用程序接收要显示的数据。 我如何使用 GTK 执行此操作(只是我应该采用的方法的一般概述)? 我进行了大量搜索并遇到了有关多线程、GIO 通道等的内容。现在我比以往任何时候都更加困惑。 似乎没有关于如何实际实现这一点的任何结论性文章或指南。

基本上有一个重要的规则:

您必须从主线程调用所有gtk_*函数。

如果您从另一个线程更新任何小部件,您可能会得到不一致的结果。

当然,您不想在该线程中等待 TCP 数据。

因此,我建议您创建一个单独的线程来进行通信。 在这个线程中,您可以等待数据,如果您有任何会影响您在 GUI 中显示的内容,您可以告诉主线程执行所需的工作。

一个简单的方法是使用g_idle_add()将回调 function 加入队列。回调 function 然后在主线程的上下文中执行,可以更新您的小部件。 需要更新的信息可以存储在传递给此回调的一些新分配的 memory 中,之后您必须在其中释放它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM