29. 套接字选项之SO_REUSEADDR

linux socket知识点记录 client.c #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #incl... 阅读详情

在TCP四次挥手中有time_wait状态, 该状态使得进入该状态的端口在2MSL的时间内不能再次被绑定, 这对客服端并没有太大的影响, 这个对服务端的影响就很大了. 一般我们编写的服务端连接都很少, 而高并发服务器对于端口立即绑定是必须的, 毕竟服务端也可能掉线而等上2MSL的时间肯定不允许.


SO_REUSEADDR 选项

  • 允许绑定处于 TIME_WAIT 状态的套接字地址

  • 允许在同一端口上启动同一服务的多个实例, 只要每个捆绑一个不同的本地IP地址.

  • 允许单个进程捆绑同一端口到多个套接字上, 只要每次捆绑指定不同的本地IP地址.

  • 允许完全重复的捆绑(UDP和TCP可以绑定在相同IP地址和端口).

同缓冲区设置一样, SO_REUSEADDR设置也需要注意顺序.

因为需要在绑定之前就需要对套接字设置好, 所以setsockopt必须在bind之前设置.

根据套接字选项的查询, SO_REUSEADDR 的optval值默认为0, 如果需要设置则应该置1, 所以设置如下.

int option = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));

本节将服务端和客服端的重新分开实现了.

服务端 : 完整代码 reuseAddr_service.c

./service 8080

客服端 : 完整代码 reuseAddr_client.c

./client 127.0.0.1 8080

在这里插入图片描述

服务端先断开之后, 还可以继续重新被绑定.

平均电流控制模式BUCK变换器的环路设计 引言 电压模式的BUCK变换器存在的常见缺点: 1、在没有前馈补偿的时候,对输入源的跳动响应较慢; 2、在不加入电感电流控制的时候,由于不直接对电感电流进行采样,因此不能实时的控制电感电流,有可能在某些负载极端变化时,系统直接奔溃; 3、LC组成的二阶系统存在谐振点,谐振峰随负载变化而变化,不容易做到完全消除; 峰值电流模式的BUCK变换器存在的常见缺点: 1、占空比大于50%时,存在次谐波震荡的问题,需要添加斜坡补偿已解决该问题; 2、抗干扰能力较差; 3、峰值电流和平均电流间存在误差,不适合做PFC线路 阅读详情

相关推荐

【NVIDIA驱动的顽固问题】---- /dev/sdax:clean,xxx/xxx files,xxx/xxx blocks ---- 最全解决方法

本文的意义在于整理总结关于此问题的全部解决方法,希望能给大家节约时间。

lc1852109的博客 3123

TCP协议属性设置之SO_REUSEADDR属性

此属性用于设置某个端口是否允许重用。这个属性的用处在那里呢?当我们编写程序时监听了一个端口,但是由于某种情况,服务器程序关闭或者一场退出。造成本地端口出现TIME_WAIT状态时。这是当我们继续监听此端口时就会出现错误。这是设置这个属性就显得非常重要。当我们设置了这个属性以后就可以继续对此端口进行监听。 但是这就引出了另外的一个问题,就是设置这个属性后允许一个套接字上同时有两个应用程序进行监听,...

weixin_33701251的博客 402

BIOS更新后PIN不可用怎么办?从原理到实操的完整修复指南

在计算机维护中,BIOS更新是常见的固件升级操作,但其引发的登录异常却常让用户措手不及。Windows Hello PIN并非传统密码,它通过TPM芯片与设备启动环境(PCR状态)强绑定,一旦主板固件或安全启动配置改变,TPM便会拒绝释放密钥,导致“由于此设备上的更改,你的PIN不再可用”。理解这一原理后,恢复路径清晰可控:优先尝试密码登录,或通过WinRE替换utilman.exe创建临时管理员,必要时还需处理BitLocker恢复密钥。本文面向系统维护与数据安全场景,系统梳理PIN失效的恢复流程与避坑方

weixin_31364787的博客 353

Delphi下端口复用的实现

其实端口复用听起来很深奥的技术,其实很简单,简单得只需要一个函数就可以实现:    setsockopt( SOCKET s, int level, int optname, const char FAR *optval, int optlen );     参数: s Socket 的识别码,level选项设定的 level ,optname   选项名称 ,optval   选项的设定值 ,o

大伟的代码空间 3056

从零搭建企业级AI网关:基于LiteLLM的安全防护体系设计

本文详细介绍了如何从零搭建企业级AI网关,基于LiteLLM构建全面的安全防护体系。内容涵盖分层防御架构、敏感数据处理、合规性配置与审计追踪,以及生产环境部署策略,助力企业安全高效地集成LLM技术,确保数据安全和合规性。

qq_27496129的博客 1291

深入解析MSPM0系列Keil开发中‘ti_msp_dl_config.h‘缺失问题的根源与修复

本文深入解析TI MSPM0系列Keil开发中'ti_msp_dl_config.h'文件缺失问题的根源与修复方法。该错误常见于编译时提示file not found,主要因SysConfig工具未正确生成或工程路径配置错误导致。文章提供了从环境检查、手动生成文件到工程配置调整的系统化解决方案,帮助开发者快速解决这一常见KEIL开发难题。

gold的博客 969

套接字选项setsockopt中参数之SO_REUSEADDR

SO_REUSERADDR这个参数允许重复使用本地地址和端口。这个设置常在服务器中使用 例如:某个服务器进程占用了TCP的80端口进行侦听,当再次在此端口侦听的时候,会返回错误,那么设置SO_REUSERADDR可以解决这个问题,允许共用这个端口。某些非正常退出的服务器程序,可能需要占用端口一段时间才能允许其他进程使用,即使这个程序已经死掉了。内核仍然需要一段时间才能释放这个端口。一般这

听风的雨滴 3006

Win10离线安装.net framework 3.5全攻略:镜像匹配与DISM命令实战(附错误0x8024402c解决方案)

本文详细解析了在Windows 10系统中离线安装.NET Framework 3.5的完整流程与核心难点。重点阐述了如何精准匹配系统版本与安装镜像,并提供了使用DISM命令进行离线安装的实战步骤。针对常见的错误代码0x8024402c,文章深入剖析了其根源,并给出了系统级的排查与解决方案,特别适合企业内网运维人员参考。

weixin_29299807的博客 658

linux设置SO_REUSEADDR选项

在Linux系统中,SO_REUSEADDR选项允许多个套接字绑定到同一个地址和端口,这在某些情况下非常有用。以下是如何开启和使用SO_REUSEADDR选项的详细说明。

SteveForever的博客 1519

基于任务的后勤智能体:三段构建与演进设计探究

这是系统智能化的核心难点。例如,对于一个“加强连级滩头阵地防御”子任务,系统会根据防御时长、预期敌军攻击强度、地形等因素,计算出所需的弹药(不同弹种的具体数量)、构筑工事的器材、人员的给养和饮水量、以及医疗救护的药品和血包数量。首先进行分词、词性标注等基础处理,然后利用在军事语料库上训练的命名实体识别(NER)模型,提取出关键实体,如任务类型(“夺控作战”)、作战对象(“Y岛”)、时间约束(“D日H时”、“24小时内”)、成功标准(“建立稳固滩头阵地”)、保障重点(“弹药充足”、“及时救治”)等。

weixin_49042442的博客 1088

安装oracle 19c 报错INS-06006 INS-44000 INS-32070

数据库版本oracle 19c 操作系统版本:centos7.8 安装oracle19c RAC 配置互信的时候setup显示成功,点test的时候报错INS-44000,继续点yes 报错INS-32070,继续往下点 报错INS-06006 处理过程 1.手动ssh node date 全部成功说明互信时没有问题的 2.查mos 文档ID 2555697.1 如果OpenSSH升级到8.x会有这个问题 MOS上的解决办法 #ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 2

cqszpx的博客 1527

套接字选项 SO_REUSEADDR

SO_REUSEADDR 4个不同功能1.允许启动一个监听服务器并捆绑其有名端口,即使以前建立的将该端口用作它们的本地端口的连接仍存在。使用这种功能一般是解决如下问题: (1)启动了一个监听服务器 (2)连接请求到达,派生一个子进程处理一个客户。 (3)监听服务器终止了,但子进程继续为连接上的客户提供服务。 (4)为了重启服务器,使用SO_REUSEADDR。在(4)步,监听服务器尝试soc

yxccc的博客 861

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

综合使用套接字选项的例子,如设置套接字选项大小,设置套接字地址重用

1 #include   2 #include   3 #include   4 #include   5 #include   6 #include   7 #include   8 #include   9 #include  10 #include  11 #include  12   13 #define PORT 8888          

zyl20120102010的专栏 973

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深入理解 SO_REUSEADDR 在 Linux 套接字编程中的应用与风险

SO_REUSEADDR 是一个套接字选项(socket option),它允许多个套接字绑定到同一个地址和端口。该选项常用于 TCP 网络编程中,尤其是涉及服务器应用时,能够避免因端口占用导致的错误。下面是关于 SO_REUSEADDR 的详细介绍。SO_REUSEADDR 选项的作用当套接字设置了 SO_REUSEAD...

cnzzs的博客 500

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

socket套接字选项

本文写作背景基于对多网卡的配置,要求实现多个网卡同时上网,并且能指定 仅针对linux下的socket选项进行整理分析。 /* For setsockopt(2) */ define SOL_SOCKET 1 define SO_DEBUG 1 define SO_REUSEADDR 2 define SO_TYPE 3 define SO_

俗科技的博客 2037

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux 套接字编程中 bind 错误:bind fail:Address already in use 解决方法

最近在学Linux 网络编程,调试TCP并发服务器时遇到一个问题,当我连接上一个或多个客户端后,用 CTRL+C 关闭进程后,重新打开进程就发生错误了:bind fail:Address already in use 地址被占用??? 开始我以为是套接字描述符未关闭,添加代码在发生错误时关闭掉套接字描述符还是不行。 上网查了才发现是原来是套接字状态未配置,IBM官网上有较为详细的解释

bian1029的专栏 2649

解决bind错误 bind: Address already in use

关于bind错误的处理: bind: Address already in use 原因: 操作系统没有立即释放端口 解决一: 等待一段时间运行网络程序即可 解决二:通过setsockopt进行设置,关键代码如下。 1 // 解决在close之后会有一个WAIT_TIME,导致bind失败的问题 2 int val = 1; 3 ...

diaojin2421的博客 1948

linux 网络编程 socket bind failed 问题解决

今天写一个简单的socket网络通讯的程序的时候,用ctrl+c结束server端程序之后。再次启动server出现了bind failed:the address already in use的错误。在网上查了一下以后找到了原因。在此记录一下。这个IBM的官网上说到了这一点:http://www.ibm.com/developerworks/cn/linux/l-sockpit...

adr5970的博客 2170

socket编程小问题:地址已经被使用——Address already in use

转自:https://www.cnblogs.com/computer1-2-3/p/6875367.html 很多socket编程的初学者可能会遇到这样的问题:如果先ctrl+c结束服务器端程序的话,再次启动服务器就会出现Address already in use这个错误,或者你的程序在正常关闭服务器端socket后还是有这个问题。 然后你开始迷惑了,难道是忘记将socket给关闭了,或是关...

qq_40443457的博客 2515

深入理解 Linux 网络编程中的 SO_REUSEPORT:高效并发与负载均衡

SO_REUSEPORT 是一个与 SO_REUSEADDR 类似的套接字选项(socket option),它在 Linux 3.9 及以后的内核中被引入,专门用于增强端口复用能力。其主要功能是允许多个套接字同时绑定到同一个 IP 地址和端口号,且可以在多核系统中提高负载均衡和系统性能。SO_REUSEPORT 的主要功...

cnzzs的博客 1219

Socket编程--并发server

Socket地址复用 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const ...

dingzhenzha7040的博客 111

TCP/IP实现(十) 协议控制块

一.协议控制块概述        网际协议控制块(Internet协议控制块)是传输层的数据结构,它被TCP,UDP以及原始IP使用,但其它协议并不适用(如:IP,ICMP,IGMP),其作用是存储一个UDP,TCP端点的共有信息,如:外部和本地IP,外部及本地端口号(原始IP不使用),IP首部原型,该socket使用的IP选项(因此大部分IP选项只作用于设置的那个socket,而不会影响到其它...

qq_34228327的博客 1318

python学习 day29之基于TCP协议通信的套接字程序

基于TCP协议通信的套接字程序之远程操控CMD服务端客户端 服务端 """ 服务端应该满足的特性: 1、一直对外提供服务 2、并发地提供服务 """ import socket import subprocess # 1、买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM=》TCP协议 # 2、插手机卡 phone.setsockopt(socket.SOL_SOCKET, socke

wuzeipero的博客 146

day 29 基于tcp协议的套接字通信

服务端: import socket#1、买手机phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp称为流式协议,udp称为数据报协议SOCK_DGRAM# print(phone)#2、插入/绑定手机卡# phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)phone...

weixin_33939843的博客 95

Linux 套接字编程中的 5 个隐患

转自:https://www.ibm.com/developerworks/cn/linux/l-sockpit/#ibm-pcon Linux 套接字编程中的 5 个隐患 在异构环境中开发可靠的网络应用程序 M. Tim Jones (mtj@mtjones.com), 资深软件工程师, Emulex 简介: Socket API 是网络应用程序开发中

grantxx的专栏 655
上一篇: 26. TCP协议之紧急模式
下一篇: 30.TCP协议之TCP缓冲区
Function_18
博客等级 码龄10年 193粉丝 239原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值