【发布时间】:2012-11-22 15:15:27
【问题描述】:
这真的很基本,但我现在正在空白。
我有一个守护进程,并希望多个客户端能够与之交谈。我希望客户端能够启动然后使用共享库,本质上是向守护进程“注册”。守护进程将为这个新客户端生成一个线程,并在客户端和新线程之间提供一个通信管道。
我正在考虑将 unix 数据报套接字作为所有客户端最初使用的“注册通道”,然后切换到特定于客户端的通道,但随后无法弄清楚如何为新的数据报套接字创建唯一名称而不设置它们先验的。
- 服务器和客户端在同一台机器上,更喜欢使用数据报套接字,而不必处理将流分成数据包的问题。
- 将来回发送(非常)高速率的小消息。
【问题讨论】:
-
我认为你不需要任何特别的东西。单域套接字可以接受多个客户端,只需在其上开始通信即可。这个stackoverflow.com/questions/9644251/… 可能是重复的。
-
我不能使用一个套接字与多个客户端通信,对吧?我仍然需要构建一些协商协议来设置辅助套接字,以允许服务器线程只与单个客户端通信。
-
我认为每次接受都会返回一个新的文件描述符
-
这仅适用于 (AF_UNIX, SOCK_STREAM) 套接字而不是 DGRAM 这将迫使我在消息中添加标头,然后必须在接收代码中将流分解为数据包。 Unix 数据报套接字在绑定之前必须有一个与之关联的名称。
-
好的,我现在明白你在说什么了。我会看看我的 Stevens 副本。
标签: linux ipc unix-socket