netcat 作为多线程服务器

netcat 作为多线程服务器

我使用 netcat 运行一个简单的服务器,如下:

while true; do nc -l -p 2468 -e ./my_exe; done

这样,任何人都可以通过端口 2468 连接到我的主机并与“my_exe”通信。
不幸的是,如果其他人想在打开的会话期间连接,则会收到“连接被拒绝”错误,因为 netcat 不再处于监听状态,直到下一个“while”循环。

有没有办法让 netcat 表现得像一个多线程服务器,即始终监听传入连接?如果没有,有没有什么解决方法?

答案1

你使用的工具不对:使用类似ucspi-tcp, 尤其tcp服务器

tcpserver waits for incoming connections and, for each connection, 
runs a program of your choice.

答案2

虽然您没有提到您使用的操作系统,但我会根据您的 shell 命令示例的语法假设它是 Linux 或 Unix。

如果您的系统正在运行xinetd(或其前身)inetd),您可以使用该软件在您选择的端口上监听连接,并运行可执行文件进行响应。使用 xinetd/inetd,您可以选择允许多个并发连接,每个连接由可执行文件的单独实例提供服务。

答案3

您很可能只是使用 '&' 来后台执行该过程(然后它不会等待返回就进入下一个循环),例如:

while true; do nc -l -p 2468 -e ./my_exe &; done

相关内容