我发现,在Unix中的“一切都是文件”的原则下,即使套接字也被视为文件,并且可以存储在文件系统中的路径中。因此,出于好奇,我试图创建一个TCP-IP套接字文件。
这个答案展示了如何创建一个命名的Unix域套接字文件。但是struct sockaddr_in没有sin_path字段。因此,我不知道如何创建一个命名的TCP-IP套接字文件。有人能告诉我怎么做吗?
发布于 2022-10-29 13:06:36
..。即使套接字也被视为文件,并且可以存储在文件系统中的路径中。
不怎么有意思。在某些套接字中,端点由文件表示。这些是UNIX域套接字(AF_UNIX),它们的变体具有类似于UDP的消息语义(SOCK_DGRAM)和类似于TCP的流语义(SOCK_STREAM)。
但是,UDP和TCP套接字在UNIX中没有文件表示。它们有一个文件描述符,虽然类似于普通文件(以及读写系统调用与这些文件一起工作),但它们不是由文件系统中的路径表示的。
还有类似于/dev/tcp/..的东西来处理bash中的套接字。但这也不是文件系统上的实际路径,而只是一个特定于bash的高级语法。
有关这方面的更多信息,请参见维基百科:一切都是文件,它专门说明:
..。因此,对此特性的更准确的描述是,所有内容都是文件描述符。
https://stackoverflow.com/questions/74243615
复制相似问题