在 TCPServer 连接的线程上引发 POCO 事件

POCO raise event on TCPServer connected threads

本文关键字:POCO 事件 线程 TCPServer 连接      更新时间:2023-10-16

我是 Poco 框架的新手,不擅长C++但我正在学习。我必须在窗口中创建一个基于服务器客户端的应用程序。我现在遇到的问题是我需要每分钟重复向客户端发送一些数据。我需要为与服务器具有活动 TCP 连接的客户端执行此操作。我不知道如何创建一个事件,或者在线程中触发并启动所有活动线程以将数据发送到客户端。我的第一个想法是我必须重写或扩展TCPServerDispatcher类。而且我不知道如何从线程池中识别活动线程。

你有什么想法,或者建议,或者教程,什么吗?我不知道该怎么做...

希望有人能给我一个想法,或者一些代码示例。谢谢。

这些服务器<>客户端线程不能为自己获取数据吗? 在每个线程中的 read() 上添加 60 秒的超时并发送数据是相当容易的。 也许这会涉及太多的数据库连接?

如果做不到这一点,您是否可以将最新数据放在可锁定的对象中,并让线程在超时时锁定、写入和解锁最新数据? 这样的解决方案实际上也应该有一个写入超时,以防止行为不良的客户端导致其服务器线程在保持锁时阻塞。 如果它不是太大,我想服务器<>客户端线程可以复制要发送的数据,但我不是复制的忠实粉丝,TBH。

有更复杂的方法可以向服务器<>客户端线程发出新数据可用的信号。很有可能向每个线程发出新数据可用的信号,并让他们"立即"对其采取行动。 这通常意味着服务器<>客户端线程等待多个信号。 通常,延迟越低,解决方案越复杂:(

Rgds,马丁