使用 SO_REUSEADDR - 先前打开的套接字会发生什么?

2023-11-26

在unix网络编程中,我总是在服务器使用的套接字上设置SO_REUSEADDR选项来侦听连接。这基本上是说可以在机器上的同一端口上打开另一个套接字。当从崩溃中恢复并且套接字未正确关闭时,这非常有用 - 应用程序可以重新启动,它只会在同一端口上打开另一个套接字并继续侦听。

我的问题是,旧插座会怎样?毫无疑问,所有数据/连接仍将在旧套接字上接收。它会被操作系统自动关闭吗?


当使用套接字的程序终止时,套接字被视为已关闭。这些都是由操作系统处理的,操作系统将拒绝接受来自死会话的任何进一步的通信。但是,如果套接字意外关闭,另一端的计算机可能不知道对话已结束,并且可能仍在尝试通信。

这就是为什么在 TCP 规范中设计了一个等待期,然后才能重用相同的端口号。因为从理论上讲,尽管不太可能,来自旧会话的数据包可能会带有适当的 IP 地址、端口号和序列号,从而导致接收服务器意外地将其错误地插入到错误的 TCP 流中。

The SO_REUSEADDR选项会覆盖该行为,允许您立即重用该端口。实际上,您是在说:“我了解风险,并且无论如何都想使用该端口。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SO_REUSEADDR - 先前打开的套接字会发生什么? 的相关文章

  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • Bash:将输出传输到后台进程?

    我想将一个进程放入后台 然后多次将数据传递给它 例如 cat The command I want to write into cat pid Getting the process id of the cat process echo h
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • C++11 gcc:声明中的显式限定?标准参考?

    当使用 gcc 4 7 编译以下 C 11 程序时 extern int i int i int main 海湾合作委员会抱怨说 error explicit qualification in declaration of i 这是不符合规
  • 使用 Apache PDFBox 从 PDF 文件中删除加密

    With QPDF 你可以简单地删除限制 加密来自 PDF 文件 如下所示 qpdf decrypt infile outfile 我想做同样的事情PDFBox在爪哇中 PDDocument doc PDDocument load inpu
  • 在 Cypress 中设置本地存储

    对于我们的一个应用程序 我需要设置本地存储以绕过登录页面过程 我有以下函数将返回我需要设置的 accessToken 该函数在节点中运行时起作用 async function getAccessToken email pwd const f
  • 为什么条件块内的函数声明在 Chrome 中被提升到函数作用域,而在 Firefox 中却没有?

    为什么以下代码在 Chrome 和 Firefox 中输出不同的结果 f function return true g function return false function if g f function f return fals
  • C 中的反转位模式

    我正在将数字转换为二进制并且必须使用putchar输出每个数字 问题是我得到的顺序是相反的 在做我自己的事情之前 有没有办法反转数字位模式 由于 int n 具有特定的位模式 我如何反转该位模式 有很多方法可以做到这一点 有些方法非常快 我
  • 尽快清除透明的 BufferedImage

    我有一个使用以下代码创建的透明 BufferedImage 我认为与它的创建方式无关 GraphicsEnvironment ge GraphicsEnvironment getLocalGraphicsEnvironment Graphi
  • 如何使用 ES6 语法将 Firebase Firestore 导入到 create-react-app 项目中

    我在让 Firebase Firestore 使用基本的 create react app 样板时遇到问题 有人有工作样本吗 The 开始使用doc仅解释了如何设置它require语句 而我想使用 ES6 导入 const firebase
  • ASP.NET MVC 数据注释日期时间默认值

    In my 视图模型我有以下属性 Required DataType DataType Date ErrorMessage Please enter a valid date in the format dd mm yyyy Display
  • sql server 2012 Express不理解俄语字母

    我有正在处理俄语文本的数据库 但是当我运行查询时它会向我显示这一点 数据库将由俄罗斯人使用 它必须正确显示俄语文本 有什么想法如何修复它吗 将来它将位于俄罗斯并与俄语版本的 SQL Server 一起使用 但现在我正在开发英语版本的 SQL
  • 如何将切片作为可变参数输入传递?

    我有一个函数func more t 我想知道是否可以使用切片来填充参数列表 我正在尝试解决以下程序 基本上是模仿一个普通的 shell 它以字符串的形式接收命令 Command函数需要一个参数 列表 我不知道如何将字符串转换为这样的列表 i
  • mysql存储函数参数

    我刚刚开始创建存储函数 这是我第一次 所以我遇到了一些问题 目前我使用调用该函数SELECT test 测试现在是函数名称 我想向函数发送一个数字 用户名 ID 并返回用户名 我通过使用这个工作SELECT test 1 1是表中用户的ID
  • java后台任务

    我想知道哪种方法是在 java 中实现某种后台任务的最有效方法 我猜那将是某种非阻塞线程 更准确地说 我有一些 java 代码 然后在某个时候我需要执行一个长时间运行的操作 我想做的是在后台执行该操作 以便程序的其余部分可以继续执行 当该任
  • 我可以创建没有对角线的底部边框吗? [复制]

    这个问题在这里已经有答案了 我想创建一个具有不同颜色的盒子 左 右和顶部颜色为红色 底部颜色为灰色 但我想要盒子的平坦底部边框 HTML div class ts div CSS ts height 100px width 100px bo
  • UIView-Encapsulated-Layout-Height 和容器视图

    I have UIViewController 1 具有scroll view 里面这个scrollview有container view固定到top bottom leading trailing 没有固定高度 Container vie
  • + 运算符的性能是否低于 StringBuffer.append()

    在我的团队中 我们通常像这样进行字符串连接 var url some dynamically generated URL var sb new StringBuffer sb append a href click here a 显然以下内
  • 在 VS 2008 嵌套母版页中包含对 JavaScript 的相对引用的首选方法

    我们的基本母版页具有如下内容 javascript actions js gt gt javascript jquery jquery 1 2 6 min js gt gt
  • Python list.clear() 时间和空间复杂度?

    我正在写一篇关于 Python 的博客文章list clear 方法 我还想提一下底层算法的时间和空间复杂度 我预计时间复杂度是O N 迭代元素并释放内存 但是 我发现了一个article其中提到它实际上是一个O 1 手术 然后 我在CPy
  • Apache POI,同时使用 XSSF 和 HSSF

    我对 Apache POI 项目有疑问 我使用失败XSSF and HSSF in the 同一个 Java 类 我应该下载哪个 jar 或应该将哪个工件添加到 Maven 中 我想同时处理两者xls and xlsx文件同时 当我收到ex
  • PHP 输出到文件以供下载,无需在服务器上创建文件

    我想将数据输出到文件供用户下载 而无需在服务器上实际创建文件 文件的数据只是一个数组 我将其转换为 CSV 格式以供用户下载 这是我的代码 fh fopen file csv w fputcsv fh arr arr is my array
  • 使用 SO_REUSEADDR - 先前打开的套接字会发生什么?

    在unix网络编程中 我总是在服务器使用的套接字上设置SO REUSEADDR选项来侦听连接 这基本上是说可以在机器上的同一端口上打开另一个套接字 当从崩溃中恢复并且套接字未正确关闭时 这非常有用 应用程序可以重新启动 它只会在同一端口上打