Linux Server 终止后立即重启报错 bind error: Address already in use
-
先启动Server,再启动Client,然后使用Ctrl+C关闭Server,马上再运行Server,会得到以下结果:
bind error: Address already in use -
这是因为,虽然Server的应用程序终止了,但TCP协议层的连接并没有完全断开,因此Server不能再监听同样的端口
-
使用netstat命令可以查看,Server终止时,Socket描述符会自动关闭并发FIN段给Client,Client收到FIN后处于CLOSE_WAIT状态,但是Client并有终止,也没有关闭Socket描述符,因此不会发FIN给Server,最终导致Server的TCP连接处于FIN_WAIT2状态
-
我们再使用Ctrl+C将Client终止掉,Client终止时自动关闭Socket描述符,Server的TCP连接收到Client发的FIN段后处于TIME_WAIT状态;TCP协议规定,主动关闭连接的一方要处于TIME_WAIT状态,等待两个MSL的时间后才能回到CLOSED状态,MSL在RFC1122中规定为两分钟,但各操作系统的实现不同,Linux上一般为半分钟
-
由于我们先终止了Server,所以Server是主动关闭连接的一方,在TIME_WAIT期间仍然不能再次监听同样的Server端口
-
在Server的TCP连接没有完全断开之前不允许重新监听是不合理的,因为前后Server占用的是同一个端口,但不一定是同一个IP地址
-
可以通过setsockopt()设置Socket描述符的选项SO_REUSEADDR为1,表示允许创建端口号相同但IP地址不同的多个Socket描述符
相关文章:
Linux Server 终止后立即重启报错 bind error: Address already in use
先启动Server,再启动Client,然后使用CtrlC关闭Server,马上再运行Server,会得到以下结果: bind error: Address already in use这是因为,虽然Server的应用程序终止了,但TCP协议层的连接并没有完全…...
【Python 千题 —— 基础篇】分解数据
题目描述 题目描述 编写一个程序,输入一个类似 “233,234,235” 格式的字符串,然后提取字符串中的数字,将这些数字存储在列表中,并输出该列表。在这里,我们使用 eval 函数来解析字符串中的数字。 输入描述 输入一个…...
【C++】C++11新特性之右值引用与移动语义
文章目录 一、左值与左值引用二、右值与右值引用三、 左值引用与右值引用比较四、右值引用使用场景和意义1.左值引用的短板2.移动构造和移动赋值3.STL中右值引用的使用 五、万能引用与完美转发1.万能引用2.完美转发 一、左值与左值引用 在C11之前,我们把数据分为常…...
家庭燃气表微信抄表识别系统
1.背景需求 目前家里燃气度数的读数上报,每个月在社区微信群里面将手机拍摄的燃气表读数截图(加住址信息水印),发到群里给抄表员。 2.总体设计 设计目标 功能一:手机上随时可以远程采集读数图片(自动加住…...
EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的
ef在执行时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 只需要在数据库链接字符串后增加EncryptTrue;TrustServerCertificateTrue;即可 再次执行...
视频标注的两个主要方法
视频标注技术 单一图像法 在自动化工具面世之前,视频标注效率不高。各公司使用单一图像法提取视频中的所有帧,然后使用标准图像标注技术将它们作为图像来标注。在30fps的视频中,每分钟有1800帧。这个过程没有利用视频标注的优势,…...
学成在线第一天-项目介绍、项目的搭建、开发流程以及相关面试题
目录 一、项目介绍 二、项目搭建 三、开发流程 四、相关面试题 五、总结 一、项目介绍 背景 业务 技术 背景:首先是整个这个行业的背景 然后基于这个行业的背景引出当前项目的背景 业务:功能模块 功能业务流程 技术:整体架构&am…...
《数据结构与算法之美》读书笔记1
Java的学习 方法参数多态(向上和向下转型) 向上转型: class Text{public static void main(String[] args) {Animals people1 new NiuMa();people1.eat1();//调用继承后公共部分的方法,没重写调用没重写的,重写了调…...
接口测试经验合集
一 、接口测试常见问题 前景提要:由于本人测试小白,可能所遇问题都较为基础,测试小白可以参考 1.1 postman会报 connect ECONNREFUSED jemeter会报 org.apache.http.conn.HttpHostConnectException: Connect tofailed: Connection refus…...
Leetcode—2331.计算布尔二叉树的值【简单】
2023每日刷题(六) Leetcode—2331.计算布尔二叉树的值 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool evaluateTree(struct TreeNod…...
Java面试(基础篇)——解构Java常见的基础面试题 结合Java源码分析
fail-safe 和fail-fast机制 Fail-fast:快速失败 Fail-fast : 表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException 异常,从而导致遍历失败 package …...
Ubuntu 17.10的超震撼声音权限
从GNOME GUADEC 2017开发者大会归来之后,Canonical的Didier Roche就开始了一个日更博客系列,主要讲述即将带来的Ubuntu 17.10(Artful Aardvark)发行版将如何从Unity到GNOME Shell的转变。有趣的是,Ubuntu Unity桌面环境…...
图像信号处理板设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板
综合图像处理硬件平台包括图像信号处理板2块,视频处理板1块,主控板1块,电源板1块,VPX背板1块。 一、板卡概述 图像信号处理板包括2片TI 多核DSP处理器-TMS320C6678,1片Xilinx FPGA XC7K420T-1FFG1156,1片X…...
【数组】移除元素(暴力遍历×双指针√)
一、力扣题目链接 27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 你不需要考虑数组中超出新长度后面的元素。 二、思路 要知道数组的元素在内存地址中是连续的,不…...
【笔试题】华为研发工程师编程题
1.汽水瓶 某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。 小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。 数据范围:输入的正整数满足 1≤n≤100 1≤n≤…...
如何转换Corona和Vray材质?cr材质转vr材质的方法
cr材质转vr材质的方法一:使用CG Magic插件,一键转换 CG Magic是一款基于3ds Max深度开发的智能化辅助插件,上千项实用功能,降低渲染时长,节省时间和精力,大幅简化工作流程,助力高效完成创作。 …...
蓝桥每日一题(day 4: 蓝桥592.门牌制作)--模拟--easy
#include <iostream> using namespace std; int main() {int res 0;for(int i 1; i < 2021; i ){int b i;while(b){if (b % 10 2) res ;b / 10;}}cout << res; return 0; }...
leetcode(2)栈
leetcode 155 最小栈 stack相当于栈,先进后出 存储全部栈元素 [-3,2,-1] min_stack,存储栈当前位置最小的元素 [-3,-3,-3] class MinStack:def __init__(self):self.stack []self.min_stack [math.inf]def push(self, x: int) :self.stack.append(x)self.min_sta…...
有什么小程序可以下载视频号的视频?
最近有一些朋友问我,【视频号下载助手】和【视频下载bot】小程序,有什么作用? 首先视频号下载助手是协助用户进行下载的,但由于下载要符合平台规定,我们就将视频下载助手与视频下载bot小程序想结合的模式࿰…...
GDB调试简单介绍
最近和许多同事交流时,发现好多人只是在IDE上debug,但是gdb却一点都不了解;校招新来的同事更是都没听过gdb这个工具,所以在培训时给他们培训了一下;另外好久也没写blog了,刚好把这篇笔记简单分享一下。 0 …...
如何解锁NVIDIA显卡隐藏性能:NVIDIA Profile Inspector终极配置指南
如何解锁NVIDIA显卡隐藏性能:NVIDIA Profile Inspector终极配置指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款能够深入调整NVIDIA显卡参数的专业工具&…...
5分钟本地提取视频字幕:Video-subtitle-extractor完全指南
5分钟本地提取视频字幕:Video-subtitle-extractor完全指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕…...
手把手调试:在Vector CANoe/CANalyzer中复现OSEK NM的建环与睡眠过程
手把手调试:在Vector CANoe/CANalyzer中复现OSEK NM的建环与睡眠过程 当工程师需要验证OSEK网络管理(NM)协议在实际车载网络中的行为时,Vector的CANoe和CANalyzer工具链提供了近乎完美的仿真环境。不同于理论讲解,本文…...
精读双模态视频融合论文系列十一|湖南大学原创 UAVD-Mamba 封神!可变形 Token+Mamba 跨模态融合碾压 !
🔥 本文定位:无人机双模态检测顶刊级方案|Mamba 融合新范式|小目标 / 夜间 / 遮挡场景暴涨点 🎯 核心收益:彻底解决传统 Vision Mamba 固定 Patch 缺陷,基于可变形 Token 打造 Mamba 原生双模态…...
从元器件到高速PCB:我的硬件工程师书单升级之路(附避坑指南)
从元器件到高速PCB:我的硬件工程师书单升级之路(附避坑指南) 记得刚入行时,面对琳琅满目的技术书籍和软件工具,我常陷入选择困难——是该先啃透《电路原理》这样的经典教材,还是直接上手《Cadence高速电路设…...
Kubie与CI/CD集成:自动化Kubernetes环境管理的完整解决方案
Kubie与CI/CD集成:自动化Kubernetes环境管理的完整解决方案 【免费下载链接】kubie A more powerful alternative to kubectx and kubens 项目地址: https://gitcode.com/gh_mirrors/ku/kubie Kubie作为kubectx和kubens的强大替代工具,为Kubernet…...
消防主机组网通信质量有担忧?巧用光纤环网冗余方案,实现超远距离、高可靠CAN通讯
摘要:在大型园区、隧道、高层建筑等消防报警系统中,如何将分散各处的消防主机(如海湾、青鸟、利达等品牌)稳定可靠地联网,并实现长距离、抗干扰的数据传输,一直是工程实践的难点。本文分享我们如何利用LCAN…...
PyTorch网络构建:Sequential、ModuleList与ModuleDict的实战选择指南
1. PyTorch网络构建的三种核心容器 当你开始用PyTorch搭建神经网络时,很快就会遇到一个关键问题:如何组织网络中的各个层?就像建筑师需要决定用钢筋、混凝土还是玻璃幕墙来构建大楼的不同部分一样,我们需要选择合适的容器来管理网…...
Oracle密码过期的处理方法
1、问题描述2、解决方法2.1、以SYSDBA身份登陆sqlplus sys/sysorcl as sysdba2.2、修改账号的密码alter user 账号 identified by "密码";...
从零实现MDP:用Python代码拆解马尔可夫决策过程核心算法
1. 马尔可夫决策过程入门指南 第一次接触马尔可夫决策过程(MDP)时,我也被那些数学符号弄得头晕眼花。但当我用Python把它实现出来后,突然就豁然开朗了。MDP本质上是一个用来建模序列决策问题的数学框架,在机器人路径规划、游戏AI等领域都有广…...
