c - 将相同的信息发送到多个线程/套接字?

标签 c linux multithreading sockets pipe

我正在编写一个服务器应用程序,它只是将本地串行端口连接到多个网络连接的客户端。我在服务器应用程序中使用 linux 和 C,因为该程序的设备是内存有限的路由器。

我为多个客户端设置了所有设置,以便为每个连接使用 fork() 进程连接并将数据发送到串行端口。

我的问题在于将串行端口上传入的数据输出到多个(可变数量)客户端连接。我的问题在于为每个事件套接字设计一种方法来获取所有传入数据,并且只获取一次。有帮助吗?

最佳答案

听起来好像每个连接的客户端都需要一个数据队列(缓冲区)。每次数据进入端口时,您都将其发布到每个客户端队列的后面。客户端然后从各自队列的前面读取数据。由于所有客户端可能会以不同的速率/时间读取,这将确保所有客户端只获得一次数据副本,并且您不会在更多数据传入时挂断等待任何一个客户端。当然,你需要为每个连接的客户端队列分配一定数量的内存(我不确定你期望有多少客户端,你确实说过你的可用内存是有限的),你需要考虑如果在客户端读取所有队列之前队列已满。

关于c - 将相同的信息发送到多个线程/套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691659/

相关文章:

c - TCP套接字服务器

java - 这个基于 Apache 的 API 客户端类线程安全吗?

代码不输出整个字符串,而是只输出其中的一部分

c - 将全局声明的缓冲区写入 FLASH 时出现 STM32 Hardfault 异常

linux - grep 使用变量和正则表达式

linux - 尝试通过 TOR middlebox 运行 Virtualbox

c# - 卡住 GUI 元素

c++ - g++中的线程?

c - 为什么这个生成的汇编代码看起来包含废话?

c - 为什么这段代码会触发 gcc 的 "maybe uninitialized"警告?