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



  • 相关阅读:
    HTML5游戏引擎Phaser初体验
    React+Node.js+Express+mongoskin+MongoDB
    React的一个简单示例
    在线白板,基于socket.io的多人在线协作工具
    使用node-webkit开发exe窗口程序
    使用Node.js的socket.io模块开发实时web程序
    dota BP练习工具开发:一个C/S多用户程序
    SQL注入之延迟盲注
    CTFHUB之gopher协议实现SSRF
    python的蟒蛇绘制
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172580.html
Copyright © 2011-2022 走看看