我是linux领域的新手程序员。我基本上是熟悉C的MicroController程序员。现在我进入小型PC编程并需要一些输入。
我正在网络上打开一个套接字并发送一个广播来查找我的嵌入式设备。首先,我正在探测机器上的接口,并将在每个子网中广播,通过签名调用我的设备。设备正在侦听该特定端口,并以其签名进行响应。程序然后获取我的设备的IP和其他详细信息,并将开始通信。 我在每个接口的一个函数中发送一个调用,并避免阻塞我正在创建另一个监听线程来获取响应,这可能需要一些时间才能到达。收到响应后,我需要通知其他线程,并将数据提供给他们。 在这种情况下,哪种方法最好?信号,消息或旗帜或其他什么? 由于我还需要在Windows中实现此代码,如果可以使用两种平台都可能的机制,那将是很好的。 请建议 罗伊托马斯
答案 0 :(得分:0)
这是一个典型的网络编程问题。就个人而言,当我在C ++中进行此级别的网络编程时,我使用C ++ POCO库(参见this)。
您不指定是使用UDP还是TCP。如果您使用TCP,那么该库提供了一个名为 TCPServer framework 的东西来处理这些问题,即管理处理连接的工作线程池。
These slides,从幻灯片“TCPServer框架”开始,解释原理。
然后,您可以使用FIFO在线程或POCO库通知之间进行通信。
答案 1 :(得分:0)
看看Qt Creator它是一个跨平台的C ++ IDE,它有很好的信号和插槽实现。
它有自己的函数库来扩展STL和一些非常好的线程,你应该看一下。
我知道这可能不是你想要的答案,但我每天都使用Qt而且很棒!所以随时提出任何问题......