我可以搜索,并且已经看过Wikipedia条目和其他地方,但是即使我有一定的编程经验,我还是不太了解这个概念。您能把我当作10岁的孩子,并给我一个关于套接字通讯的清晰解释吗?
我可以搜索,并且已经看过Wikipedia条目和其他地方,但是即使我有一定的编程经验,我还是不太了解这个概念。您能把我当作10岁的孩子,并给我一个关于套接字通讯的清晰解释吗?
Answers:
让我举个例子:假设您想与不在您住址的朋友交流/聊天。为此,您必须建立一个“沟通渠道”。假设您要使用电话进行此通信。您知道城市中有电话线网络,该网络延伸到每个房屋。
现在,您家中有一个电话插座,而您朋友家中有一个。为了进行通信,您和您的朋友必须通过将电话插入通信两端的插座来连接到网络。从概念上讲,编程中的套接字与电话套接字相同。
在编程中,您有两个要相互通信的进程(正在运行的程序)。为此,他们必须在自己之间建立通信链接。同样,有可用的网络,他们只需要使用某种套接字就可以连接到该网络。Unix套接字就是这样一种套接字,它为网络提供了这种连接/可插入性。因此,在这两个程序的每一个中,您将都有一些代码来完成通过套接字连接到网络的工作。
剩下的就是细节。
Unix套接字是双向套接字-就像您可能熟悉的基于IP的套接字一样,有点类似于您可能熟悉的管道。
它们具有少量有趣的属性:
从本质上讲,它们等效于任何其他套接字-它们具有比管道更有趣的属性,但在其他方面没有根本不同。它们通常具有比管道更高的IPC延迟,并且通常具有更大的缓冲区-尽管您可以进行调整,但它取决于平台。
要记住的最后一个有趣的属性是,它们使用文件系统作为其命名空间-就像命名管道,而不是匿名管道,因为该软件没有先前的关系可以通信。(抽象名称空间套接字是相同的,但“文件”路径不必存在。)
没有比这更深的东西了-它们没有任何超级秘密的隐藏属性,这些属性使它们与典型的管道或与本地主机的TCP连接完全不同。
对Linux套接字进行编程,第1部分:使用TCP / IP对我来说非常有效。首先介绍IP网络和网络层,然后继续介绍如何在C和Python中实现简单的回显服务器和客户端。