我需要在客户端和服务器之间设置本地IPC。这是单个服务器和多个客户端的情况,并且需要在两个方向上交换数据。客户端是发送命令选项的命令,服务器获取数据并将其发送到客户端。客户端在控制台上打印从服务器接收的输出。
从命令发送的数据很小,但服务器发送给命令的数据很大(~11Mb)。 Windows中的现有设计使用命名管道以65千字节的块发送数据。服务器需要同时将数据发送到多个命令客户端,因为从不同的终端同时执行具有不同选项的命令是常见的。
我遗漏了FIFO,因为来自多个进程的数据可以交错为大小超过4096字节的消息。如果我错了,请纠正我。
考虑以下两个标准,哪个是更好的选择,POSIX消息队列或unix域套接字?
如果您需要更多详细信息,请与我们联系。
此致,Rohini Chandra
答案 0 :(得分:0)
听起来你想要一个插座。使用bind在服务器上设置套接字,然后当每个客户端连接到它时,服务器可以分叉以单独处理每个客户端,或使用select来处理客户端。分叉通常更简单:
int sock = create and bind the socket to any port
while (1) {
int client = accept(sock);
pid_t pid = fork()
if (pid == 0) {
// Handle client command
exit(0);
}
}