简而言之

简而言之

假设我希望将一些数据输入到我的系统上创建的某个网络端口并手动执行此操作。文件系统上有它的接口吗?
也许我可以写入一种特殊类型的文件?如果不是的话,这一切是如何运作的?

(尽管我提出这个问题可能听起来很荒谬,而且根本没有意义。我很乐意接受有关该主题的一些好文章的链接。)

答案1

简而言之

您无法以某种方式执行您所描述的操作,例如使用cat写入文件并将其通过网络发送出去。然而,有一些工具可以做到这一点。我建议研究netcatsocat(socat 更灵活,但稍微更混乱)。两者都可能出现在您的发行版存储库中。

解释

在 Linux 中,IP 套接字存在于用户空间中,并且文件系统本身没有文件。

为了演示这一点,我运行了$ lsof -i :15115(端口 15115 与 Skype 关联):

COMMAND  PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
skype   3836 eightbit   43u  IPv4 9020794      0t0  TCP *:15115 (LISTEN)
skype   3836 eightbit   44u  IPv4 9020795      0t0  UDP *:15115 

因此进程有一个为 TCP 套接字3836编号的文件描述符(“u”仅表示文件以 r+w 权限打开)。4315115

所以如果我这样做$ ls -l /proc/3836/fd/43 && file /proc/3836/fd/43我会得到:

lrwx------ 1 eightbit eightbit 64 Sep 26 00:37 /proc/3836/fd/43 -> socket:[9020794]
/proc/3836/fd/43: broken symbolic link to socket:[9020794]

正如你所看到的,插座不是真的一份文件。

相关内容