如何在socket中使用cat命令?

6
阅读cat命令的源代码时,我发现cat命令支持从套接字读取。您可以在http://src.gnu-darwin.org/src/bin/cat/cat.c.html查看源代码。但是我从未使用过此命令与套接字一起使用:只是快速查看文件或连接多个文件。使用cat +套接字可以做什么?您能否给出一个有趣的例子,演示如何使用cat命令从套接字读取数据?谢谢。

10
无论做什么,都不要把你的猫插在插座里:它可能会触电 :)(很抱歉,我忍不住了)。 - Sergey Kalinichenko
您对这个问题有编程背景吗? - dmckee --- ex-moderator kitten
这个问题似乎不适合本站,因为它涉及使用Unix工具。更适合在Unix&Linux上提问。 - Jonathan Hall
像这样 - user11153
2个回答

3

使用在Unix/Linux中的命令nc,也称为"netcat"。你很可能需要作为客户端套接字,因此可以像这样使用:cat <filename> | nc <ip> <port>


那个 cat 的例子的作用只是将内容传递到 /dev/stdout(就像我们经常做的那样)。所以,我想知道,我们能否将 cat 用作服务器端?而不是使用 nc -l <ip> <port> - itchyny

0
你找到的 cat 源代码包含一些魔法来调用 socket() 和 connect(),当你尝试 cat 一个 socket 时。它不包含任何 listen() 或 accept(),所以它无法执行“服务器端”的任务。它使用的是 Unix 域套接字,而不是 Inet 套接字,因此不要认为它是用于在实际网络上传输东西的。Unix 域套接字只是本地进程间通信的终点。

我无法想象他们在添加这个功能到 cat 时所考虑的用例。


谢谢。保持冷静,你说的完全正确:我在代码中没有找到listen。再次感谢。 - itchyny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接