Linux

如何使用 bash 創建一個套接字伺服器並允許多個客戶端在同一個埠?

  • April 21, 2019

我有4個程序,以後會增加,這些程序必須連接到同一個ip:port才能同時發送和接收消息。

直到現在我已經打開了套接字,我還想保持程序和伺服器之間的連接。

#!/bin/sh
nc -lvk 88.109.110.161 100 > port100.txt 2>&1

nc不能並行處理多個連接的客戶端,並且是此工作的錯誤工具。有很多適合這項工作的工具,包括:

  1. Bernstein tcpserver(original or djbwares) or Hoffman tcpserver:
tcpserver -v -R -H -l 0 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. 我的tcpserver墊片:
tcpserver -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. 我的 UCSPI-TCP 工具:
tcp-socket-listen 88.109.110.161 100 tcp-socket-accept --verbose sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. 貝爾科特s6-tcpserver4
s6-tcpserver4 -v 2 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. Bercot s6-網路工具:
s6-tcpserver4-socketbinder 88.109.110.161 100 s6-tcpserver4d -v 2 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. tcpsvd
tcpsvd -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/
  1. 桑普森onenetd
onenetd -v 88.109.110.161 100 sh -c 'exec cat 1>&2' 2>&1 |
cyclog port100/

並且可以替換multilog, s6-log,svlogdtinylogcyclog

進一步閱讀

引用自:https://unix.stackexchange.com/questions/513648