zoukankan      html  css  js  c++  java
  • UNIX网络编程——套接字选项(SO_REUSEADDR)

    1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。

      SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。TCP,先调用close()的一方会进入TIME_WAIT状态

    2、SO_REUSEADDR和SO_REUSEPORT


    SO_REUSEADDR提供如下四个功能:

    • 当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。这通常是重启监听服务器时出现若不设置此选项则bind时将出错。
    • SO_REUSEADDR允许在同一端口上启动同一服务器的多个实例(多个进程)只要每个实例捆绑一个不同的本地IP地址即可。对于TCP我们根本不可能启动捆绑相同IP地址和相同端口号的多个服务器。
    • SO_REUSEADDR允许单个进程捆绑同一端口到多个套接口上只要每个捆绑指定不同的本地IP地址即可。这一般不用于TCP服务器。
    • SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的多播,不用于TCPTCP不支持多播)。

    SO_REUSEPORT选项有如下语义:

        此选项允许完全重复捆绑但仅在想捆绑相同IP地址和端口的套接口都指定了此套接口选项才

        如果被捆绑的IP地址是一个多播地址则SO_REUSEADDRSO_REUSEPORT等效。



  • 相关阅读:
    php.h: No such file or directory
    检查日期是否为节假日api
    Linux下实现秒级的crontab定时任务
    Apache 两种mpm prefork 和 worker 的区别
    centos6 安装mysql报错Requires: libc.so.6(GLIBC_2.14)
    Yii2 高级模板添加更多Application
    Yii2 assets注册的css样式文件没有加载
    Yii rbac原理和实践
    Yii2 ActiveRecord save失败
    Yii2 手动安装yii2-imagine插件
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172580.html
Copyright © 2011-2022 走看看