Linux socket / 端口复用

int reuseaddr = 1;
int r = setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&reuseaddr, sizeof(reuseaddr));

SO_REUSEADDR 可以用在以下 4 种情况下。 (摘自《Unix网络编程》卷一,即UNPv1)

  1. 当有一个有相同本地地址和端口的 socket1 处于 TIME_WAIT 状态时,而你启动的程序的 socket2 要占用该地址和端口,你的程序就要用到该选项。(开启该功能时, server 关闭时可以立刻重启 server 的功能。)
  2. SO_REUSEADDR 允许同一 Port 上启动同一服务器的多个实例(多个进程)。但每个实例绑定的IP地址是不能相同的。在有多块网卡或用 IP Alias 技术的机器可以测试这种情况。
  3. SO_REUSEADDR 允许单个进程绑定相同的端口到多个 socket 上,但每个 socket 绑定的 ip 地址不同。这和 2很相似,区别请看UNPv1。
  4. SO_REUSEADDR 允许完全相同的地址和端口的重复绑定。但这只用于UDP的多播,不用于TCP。

(SAW:Game Over!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值