通过 Unix 域套接字发送结构
Posted
技术标签:
【中文标题】通过 Unix 域套接字发送结构【英文标题】:Sending structs through Unix domain sockets 【发布时间】:2010-09-13 22:18:58 【问题描述】:我正在使用 Unix 域套接字在 Linux 中进行一些进程间通信。连接后,客户端使用 send 向服务器发送一个结构。此结构包含有关客户端的一些信息,包括末尾的标识符字符串。服务器接收刚刚找到的信息并将另一个结构发回。客户端使用 recv 阻塞,但永远不会得到任何东西。服务器完成 send 调用,没有任何错误并继续前进。
我在这里缺少一些基本的东西吗?当我通过套接字发送字符串时,双方发送和接收都很好。数据是否必须有一个终止 NULL?好像不太对……
【问题讨论】:
套接字是数据报模式还是流模式? 它们处于流模式。 您的问题暗示这只发生在结构上。整数或字符都可以正常工作吗? 这听起来像是在手册页中解释的相关函数调用之一。并不是说这对 SO 来说是个坏问题,我只是建议您在等待答案时仔细查看文档。 您所描述的应该可以正常工作。也许尝试将问题隔离为一个小代码示例? 【参考方案1】:当我第二天进来时,我无法再次重现错误。
【讨论】:
【参考方案2】:尝试刷新服务器上的套接字。
【讨论】:
除了 close 之外我没有看到任何可以刷新套接字的东西。 尝试将send()
函数的flags
参数设置为MSG_EOR
。以上是关于通过 Unix 域套接字发送结构的主要内容,如果未能解决你的问题,请参考以下文章
Beats:将 Unix 域套接字中的数据索引到 Elastic Stack