Linux
如何使用 bash 創建一個套接字伺服器並允許多個客戶端在同一個埠?
我有4個程序,以後會增加,這些程序必須連接到同一個ip:port才能同時發送和接收消息。
直到現在我已經打開了套接字,我還想保持程序和伺服器之間的連接。
#!/bin/sh nc -lvk 88.109.110.161 100 > port100.txt 2>&1
nc
不能並行處理多個連接的客戶端,並且是此工作的錯誤工具。有很多適合這項工作的工具,包括:
- Bernstein
tcpserver
(original or djbwares) or Hoffmantcpserver
:tcpserver -v -R -H -l 0 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- 我的
tcpserver
墊片:tcpserver -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- 我的 UCSPI-TCP 工具:
tcp-socket-listen 88.109.110.161 100 tcp-socket-accept --verbose sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- 貝爾科特
s6-tcpserver4
:s6-tcpserver4 -v 2 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- Bercot s6-網路工具:
s6-tcpserver4-socketbinder 88.109.110.161 100 s6-tcpserver4d -v 2 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- 紙
tcpsvd
:tcpsvd -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
- 桑普森
onenetd
:onenetd -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 | cyclog port100/
並且可以替換
multilog
,s6-log
,svlogd
或tinylog
。cyclog
進一步閱讀
協議:
- 喬納森·德博因·波拉德 (2016)。UNIX 客戶端-伺服器程序介面上的 gen。經常給出答案。
- 丹尼爾 J. 伯恩斯坦 (1996)。UNIX 客戶端-伺服器程序介面。cr.yp.to.
工具集:
參考手冊:
- 丹尼爾·伯恩斯坦。該
tcpserver
程序。ucspi-tcp。- 歐文霍夫曼。
tcpserver
. ucspi-tcp6 . fehcom.des6-tcpserver4
. 勞倫特·伯科特。 s6-網路。skarnet.org。tcpsvd
. ipsvd。格里特佩佩。銳化.org。- 喬納森·德博因·波拉德 (2019)。
tcpserver
. djbwares。軟體。- 喬納森·德博因·波拉德 (2019)。
tcp-socket-listen
. 小吃指南。軟體。- 喬納森·德博因·波拉德 (2019)。
tcp-socket-accept
. 小吃指南。軟體。- 喬納森·德博因·波拉德 (2019)。
tcpserver
. 小吃指南。軟體。記錄: