gpt4 book ai didi

sockets - netcat 如何从两个不同的终端监听同一主机上的同一端口?

转载 作者:可可西里 更新时间:2023-11-01 02:38:55 26 4
gpt4 key购买 nike

为什么当我从两个不同的终端执行以下命令时(在我的 Debian 8.4 机器上)没有输出“地址已在使用”类型的错误?

netcat -p 1234 -l

我想知道为什么它不抛出错误,因为它启动了两个监听同一端口的进程。
netcat 不使用套接字吗?怎么可能?

最佳答案

在我的系统上,运行 strace nc -l 1234 结束时:

socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(3, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(1234), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(3, 1) = 0
accept(3,

因此套接字设置了选项SO_REUSEADDRSO_REUSEPORT,这允许多个进程绑定(bind)到同一个端口和同一个监听地址。参见 man 7 socketthis detailed answer .此选项的目标是允许一种简单的负载平衡形式:到端口的传入连接将被重定向到其中一个进程(显然是随机的)。

关于sockets - netcat 如何从两个不同的终端监听同一主机上的同一端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com