我有一个父进程和 n 个子进程等待,因此从网络接收一些东西。问题是,对于孩子从网络收到的每条消息,我需要告诉父亲消息包含什么。如果我尝试制作管道或父亲和孩子之间的套接字对,然后父亲不知道消息在哪里结束,另一个消息从哪里开始。你能帮忙吗?
问问题
246 次
2 回答
2
您正在使用面向流的管道/套接字对。所以你失去了消息边界。
使用面向数据报的套接字来保持消息边界。
有关基于数据报的 unix 套接字和套接字对的更多信息,请参见 mapage unix(7) 。
有些功能可能适合您:
socket(AF_UNIX, SOCK_DGRAM, 0);
socketpair(AF_UNIX, SOCK_DGRAM, 0, int *sv);
于 2013-01-07T11:06:24.070 回答
1
在写入管道或套接字对之前使用一些分隔符,以便每个孩子在发送给父亲之前将该分隔符添加到消息中
于 2013-01-07T10:51:17.423 回答