我正在编写一个服务器应用程序,它只是将本地串行端口连接到多个网络连接的客户端。我在服务器应用程序中使用 linux 和 C,因为该程序的设备是内存有限的路由器。
我为多个客户端设置了所有设置,以便为每个连接使用 fork() 进程连接并将数据发送到串行端口。
我的问题在于将串行端口上传入的数据输出到多个(可变数量)客户端连接。我的问题在于为每个事件套接字设计一种方法来获取所有传入数据,并且只获取一次。有帮助吗?
最佳答案
听起来好像每个连接的客户端都需要一个数据队列(缓冲区)。每次数据进入端口时,您都将其发布到每个客户端队列的后面。客户端然后从各自队列的前面读取数据。由于所有客户端可能会以不同的速率/时间读取,这将确保所有客户端只获得一次数据副本,并且您不会在更多数据传入时挂断等待任何一个客户端。当然,你需要为每个连接的客户端队列分配一定数量的内存(我不确定你期望有多少客户端,你确实说过你的可用内存是有限的),你需要考虑如果在客户端读取所有队列之前队列已满。
关于c - 将相同的信息发送到多个线程/套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691659/