设置:
用户有两个应用程序-一个发送方一个接收方-在同一主机/服务器上运行。用户对其进行设置,以便发件人将消息发送到其自己的IP地址而不是127.0.0.1。为了简单起见,假设其IP和端口为x:y。然后,用户将接收方设置为在x:y上接收消息。同样,它在同一台主机/服务器上。
问题:
答案 0 :(得分:0)
让我们逐步进行:
发送端口根本没有关系。因此,您可以为发送方选择一个任意端口,并为接收方使用特定的端口号来提供服务。
否,SO_REUSEADDR / PORT无法解决此问题。即使您设法做到这一点:不要在同一端口上启动多个侦听器。这会造成奇怪的影响。 SO_REUSEADDR / PORT的主要目的是允许服务器在先前的服务器进程刚刚终止时创建一个TCP(而非UDP)套接字,而无需等待过时套接字的TCP状态机超时。
更正,假设您是说 multicast 而不是 broadcast
是,不是:如果您只想向自己发送消息,则可以将数据包发送到127.0.0.1,然后您的消息将是普通的单播数据包,不再是多播数据包,而IP_MULTICAST_LOOP不会根本不重要。组播数据包是普通UDP数据包,其目的地址在组播地址范围内(即224.0.0.0-239.255.255.255)。接收套接字无法轻易分辨出数据包是通过单播还是通过多播发送的。
IP路由并非易事。普通路由表中仅显示未所涉及的许多机制和路由规则,仅用于传出流量。它还取决于您尝试观察消息的方式。没有一个地方可以看到所有消息通过一个节点(不幸的是)。通常,所有这些都附加到接口,并且还附加到入口和出口侧,并且入口和出口侧通常没有文档记录且不可配置。监视本地流量可能很棘手,可能需要虚拟网络接口。真的很乱。
摘要:您正在尝试将消息从一个进程发送到同一主机上的另一个进程。为此,使用单播UDP,就可以完成。不涉及多播。