我想让一个nc命令监听 TCP 端口,所以我这样做了:
nc -lv 8888
Run Code Online (Sandbox Code Playgroud)
然后在另一个控制台中,我检查尝试侦听同一端口的另一个程序是否会收到某种Address already in use类型的错误,因此我再次发出相同的命令:
nc -lv 8888
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是第二个命令也成功了。研究两个程序如何在同一个 TCP 端口上侦听,我发现如果使用选项打开侦听套接字SO_REUSEPORT,这是可能的,所以我想 nc正在使用它。
如何禁止nc其他程序使用其同一端口?我希望它侦听端口 8888 并确保这是唯一侦听该端口的程序。
到目前为止,我已经能够通过这样的介绍来完成我想做的socat事情nc:
socat TCP-LISTEN:8888,fork TCP:localhost:4444
nc -lv 4444
Run Code Online (Sandbox Code Playgroud)
因为socat不允许任何其他程序侦听同一端口。
但仅用 就可以实现这一点吗nc?