inetd
可以使多个具有 stdin 输入和 stdout 输出的程序像具有从套接字输入和输出到套接字的程序一样工作,并同时监视它们的侦听套接字。
有没有比只适用于单个程序更简单的程序inetd
:使具有 stdin 输入和 stdout 输出的单个程序像具有来自套接字的输入和输出的程序一样工作?
谢谢。
答案1
Nmap 的 Ncat可以使用它的-c
或-e
选项来做到这一点:
nc -l -c bc
将侦听默认端口 (31337),并在建立连接时bc
以其连接到套接字的标准输入和输出运行。
nc localhost 31337
然后将连接到“远程” bc
,然后您可以输入bc
表达式并查看其结果。
socat tcp-listen:31337,reuseaddr,fork EXEC:bc
答案2
有很多 UCSPI-TCP 工具。
以下服务器程序为./service
,0.0.0.0 或 ::0 为主机 IP 地址,7777 为端口号。
还有(未在此答案中列出,但记录在各种工具集合中,qv)用于 AF_LOCAL 套接字的 UCSPI-UNIX 和 UCSPI-LOCAL 工具,用于对 FIFO 执行相同操作的工具,用于 TLS/TCP 套接字的 UCSPI-SSL 工具,以及Netlink 套接字的工具。
伯恩斯坦 ucspi-tcp
在 Daniel J. Bernstein 的 ucspi-tcp 中,有tcpserver
:
tcpserver -v -P -R -H -l 0 0.0.0.0 7777 \ 。/服务
Bernstein ucspi-tcp 有支持 IPv6 的增强版本,例如 Erwin Hoffman 的tcpserver
:
tcpserver -v -P -R -H -l 0 ::0 7777 \ 。/服务
Bercot s6-网络
Laurent Bercot 的 s6 网络具有s6-tcpserver4
:
s6-tcpserver4 -v 0.0.0.0 7777 \ 。/服务和
s6-tcpserver6
:s6-tcpserver6 -v ::0 7777 \ 。/服务这些是其他 s6 网络工具的垫片。
nosh UCSPI 工具
nosh 工具集有tcp-socket-listen
和tcp-socket-accept
:
tcp-socket-listen --combine4and6 :: 7777 \ tcp-socket-accept --verbose --localname 0 \ 。/服务它还有一个
tcpserver
只是其他两个的垫片,并且默认有几个选项:tcpserver -v -l 0 :: 7777 \ 。/服务
帕普 ipsvd
Gerrit Pape 的 ipsvd 有tcpsvd
:
tcpsvd -v 0.0.0.0 7777 \ 。/服务
桑普森onenetd
亚当·桑普森有onenetd
:
onenetd -v :: 7777 \ 。/服务
进一步阅读
- 协议:
- 乔纳森·德博因·波拉德 (2016)。UNIX 客户端-服务器程序接口上的 gen。经常给出的答案。
- 丹尼尔·伯恩斯坦 (1996)。UNIX 客户端-服务器程序接口。 cr.yp.to。
- 工具集:
- 参考手册:
- 丹尼尔·J·伯恩斯坦。该
tcpserver
程序。 ucspi-tcp。 - 埃尔文·霍夫曼。
tcpserver
。 ucspi-tcp6。 fehcom.de。 s6-tcpserver4
。洛朗·贝尔科特. s6 网络。 skarnet.org。s6-tcpserver6
。洛朗·贝尔科特. s6 网络。 skarnet.org。tcpsvd
。 ipsvd。格里特·帕普. smarden.org。- 乔纳森·德博因·波拉德 (2019)。
tcpserver
。 小吃指南。软件。 - 乔纳森·德博因·波拉德 (2019)。
tcp-socket-listen
。 小吃指南。软件。 - 乔纳森·德博因·波拉德 (2019)。
tcp-socket-accept
。 小吃指南。软件。 - 乔纳森·德博因·波拉德 (2019)。
tcpserver
。 DJBwares。软件。
- 丹尼尔·J·伯恩斯坦。该