【发布时间】:2010-10-22 13:01:27
【问题描述】:
我编写了一个程序,用 C 语言创建 TCP 和 UDP 套接字并启动两个服务器。该应用程序的目标是监视 TCP 套接字上的请求以发送哪些 UDP 数据包(即监视“0x01 0x02”之类的内容,如果我看到它,则让 UDP 服务器解析有效负载,并将其转发过去到 TCP 服务器进行处理)。问题是,UDP 服务器将忙于让另一台设备保持正常运行,实际上是与该设备来回发送数千个数据包。那么,什么是持续监控来自 TCP 服务器的请求的最佳方式,但由于 UDP 服务器会很忙,所以在请求时从 UDP 服务器向其发送某些有效负载?
我研究了带有信号量和/或互斥体的 pthreads(但不确定所有套接字操作都是线程安全的,如果这是处理它的正确方法)以及 fork / pipe。将 UDP 服务器作为子进程关闭似乎很容易,但我不知道如何在两个服务器之间传递我需要的那种数据(需要来自 TCP 的请求数据和来自 UDP 的有效负载数据)。
【问题讨论】: