![是否可以使用 shell 命令建立 Socket 会话(服务器和客户端之间)?](https://linux22.com/image/62262/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20shell%20%E5%91%BD%E4%BB%A4%E5%BB%BA%E7%AB%8B%20Socket%20%E4%BC%9A%E8%AF%9D%EF%BC%88%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B9%8B%E9%97%B4%EF%BC%89%EF%BC%9F.png)
根据我读到的内容(仅是大纲,我不懂C语言),通过按一定顺序调用服务器和客户端的函数,在服务器和客户端之间建立套接字会话。
It starts with the Server:
socket() #creates communication point
bind() #gives this communication point an address
listen() #tells it to be ready for some signal
then the Client:
socket()
connect() #establishes a line between himself and the listening Server
now both can talk with each other by using read() and write().
嗯,这是用 C 编程语言实现的,但是也可以用 Shell 来实现吗?如果可以的话,这样做有意义吗?
答案1
有多个程序可用于从命令行(或通过 shell 脚本)建立套接字连接。最常见的可能是netcat,其中至少有三种实现:
原件 ©1995-1996 Avian Research(霍比特人的网猫)。据我所知,没有好的上游链接,所以它位于 Debian 软件包跟踪器中:https://tracker.debian.org/pkg/netcat
Netcat6,重写。现已宣布废弃;http://www.deepspace6.net/projects/netcat6.html
netcat-openbsd,由 OpenBSD 项目重写。或许就是你想要的那一位。代码可见于http://bxr.su/openbsd/usr.bin/nc/
socat,不是重写,而是相同的想法,具有许多附加功能。另一个不错的选择如果您需要所有功能并且不介意额外的复杂性。http://www.dest-unreach.org/socat/
bc
手册页提供了许多示例,例如,以下是如何在套接字上运行(基于手册页中更可怕的示例) :
mkfifo /tmp/f && cat /tmp/f | bc -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
然后您可以bc
使用以下命令连接到该网络:
nc localhost 1234
或者用socat
,它是:
socat EXEC:'bc -i' TCP4-LISTEN:1234,bind=127.0.0.1 # server
socat - TCP4:127.0.0.1:1234 # client