gpt4 book ai didi

c - 用于 IPC 的 Linux 环回 UDP 套接字

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:26 25 4
gpt4 key购买 nike

目前,我有工作正常的代码,可以在我编写的两个程序之间传递消息。这是我正在使用的方案:

程序A

  • a_tx_socket -> 在 127.0.0.1,端口 A 上发送数据

  • a_rx_socket -> 在 127.0.0.1,端口 B 上接收数据

计划B

  • b_tx_socket -> 在 127.0.0.1,端口 B 上发送数据

  • b_rx_socket -> 在 127.0.0.1,端口 A 上接收数据

请注意,我在接收数据的套接字(a_rx_socket 和 b_rx_socket)上调用了 bind()。每个套接字都是通过调用 socket() 系统调用创建的。

现在,对于我的问题...有没有办法摆脱一个端口?即我可以仅使用一个端口在环回地址上发送/接收吗?我如何确保程序 A/B 不接收它发送的数据?这是否值得出于任何原因(性能/可维护性/乐趣/等)进行探索?

最佳答案

一次只有一个进程可以绑定(bind)到给定的套接字地址。随后的绑定(bind)尝试将获得 EADDRINUSE,这意味着该地址已在使用中。

对于ip地址,套接字地址由端口和IP地址组成。请参见“man 7 ip” ' 了解详情。

因此,您需要两个端口,否则您的两个程序中只有一个能够绑定(bind)(并因此接收数据包)。

如果您的两个程序总是在同一台机器上,您可能希望改用 unix 域套接字,因为它们对于该用例而言效率更高。

关于c - 用于 IPC 的 Linux 环回 UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com