请问linux下多个socket可以同时listen同一个端口吗

发布网友 发布时间:2022-04-23 15:48

我来回答

3个回答

热心网友 时间:2022-05-03 02:33

只允许一个应用诊听某端口。追问还有几个问题 不知道能不能回答我下,
1socket的listen 在使用前需要判断端口是否被占用吗(以防止listen已经被占用了的端口,那样做就没意义了,不是吗)
2如何能对已经被占用了端口进行释放(close(监听的socket)貌似不能释放掉已经被占用的端口,导致我的程序结束之后再运行就无法接受端口消息了)

追答1.端口被占用,许多软件会报告端口已被占有,你再选一只备用端口;
2. 别人占用的资源,你是不能强行释放的;

热心网友 时间:2022-05-03 03:51

应该不是在listen里面来决定端口是不是被占用的
而是在bind的时候.
bind如果在已经被占用的地址和端口上使用会抱错
EADDRINUSE
The given address is already in use.
如果你发现端口无法释放,可以在后续进程中bind之前调用setsockopt SO_REUSEADDR 1 来允许再次绑定相同端口

热心网友 时间:2022-05-03 05:26

这个叫端口复用,搜索一下吧。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com