• 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等效。



  • 相关阅读:
    java wait 与 notify sleep
    java线程安全总结
    ubuntu安装遇到的问题
    python时间处理函数
    js获取当前时间
    sql如何将同个字段不同值打印在一行
    django models数据类型
    django上传图片和文字记录
    django form使用学习记录
    django中request对象详解(转载)
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172580.html
Copyright © 2020-2023  润新知