本地通信 - 127.0.0.1与IPC

时间:2018-02-20 17:03:38

标签: c linux sockets ipc

我不清楚使用TCP套接字与客户端连接到127.0.0.1服务器地址和其他IPC(如消息队列)之间的区别。由于两者都用于同一主机内的通信,为什么有人会采用套接字方法将消息队列保留为一,因为在这种情况下,套接字将导致与队列相比更多的开销。

我看到的差异: - 在套接字的情况下,我们可以在wireshark中看到内容,在队列中没有这样的方式。

2 个答案:

答案 0 :(得分:2)

环回接口/地址的重点不在于您编写程序以专门使用它。

关键是,它允许您以与您在远程主机上运行的网络服务进行通信的相同的方式与本地计算机上运行的网络服务进行通信。例如,如果我正在开发一个网站,我可以在我的本地计算机上启动其服务器的测试实例,然后将我的浏览器指向http://127.0.0.1/,就在那里。我没有必要修改我的浏览器代码,以便先通过AF_UNIX套接字进行通信。同样,如果我正在编写一个需要数据库的应用程序,我可能会开始使用与应用程序在同一台计算机上运行的数据库,通过环回与它交谈,但后来当数据库变大时我可以将它移动到专用主持人,我不必更改连接配置以外的任何内容。

本地IPC的开销较低是完全正确的,当需要通信的两个进程总是在同一台机器上时,应该使用它。

答案 1 :(得分:0)

TCP和IPC这两种方法都用于分布式架构中的进程间通信。如果进程在同一台机器上运行,我们将使用消息队列,但肯定不是TCP。但是假设一个应用程序在一个盒子中运行而另一个应用程序在另一个盒子中运行,我们肯定必须使用TCP进行进程间通信。甚至Web服务也在内部实现TCP以与远程应用程序进行通信。

但是我们仍然需要在必须进行同步通信的两个进程之间的同一台机器上进行TCP基础通信。例如,如果您发送客户帐户信息请求并等待响应,则需要使用此方法。但是,如果您只需要将一个客户端信息发送到服务器以将其存储在一个表中,并且您不需要该服务器的答案,无论您的记录是否已成功存储,您只需要一个队列来删除该消息。