绑定失败:地址已被使用

2024-01-08

我正在尝试将套接字绑定到以下端口:

if( bind(socket_desc,(struct sockaddr *) &server, sizeof(server)) < 0)
{
    perror("bind failed. Error");
    return 1;
}
puts("bind done");

但它给出了:

$ ./serve   
Socket created    
bind failed. Error: Address already in use

为什么会出现这个错误?


每个人都是对的。但是,如果您还忙于测试您的代码own如果应用程序启动和停止相对较快,则它可能仍然“拥有”套接字。尝试SO_REUSEADDR http://www.unixguide.net/network/socketfaq/4.5.shtml作为套接字选项:

SO_REUSEADDR 到底做了什么?

这个套接字选项告诉内核即使这个端口很忙(在 TIME_WAIT 状态),无论如何都可以重用它。如果很忙的话 但在另一个州,您仍然会得到一个已在使用的地址 错误。如果您的服务器已关闭,然后再 当套接字在其端口上仍处于活动状态时立即重新启动。你 应该注意的是,如果有任何意外的数据进来,可能会造成混乱 您的服务器,但是虽然这是可能的,但可能性不大。

有人指出“套接字是一个 5 元组(原始、本地 地址、本地端口、远程地址、远程端口)。 SO_REUSEADDR 只是说 您可以重复使用本地地址。 5元组仍然必须是 独一无二!”作者:迈克尔·亨特([电子邮件受保护] /cdn-cgi/l/email-protection)。这是真的,而且这个 这就是为什么人们不太可能看到意外数据的原因 你的服务器。危险在于这样的5元组仍然是浮动的 在网络上四处传播,当它四处跳跃时,一个新的连接 来自同一个客户端,在同一个系统上,碰巧得到了相同的结果 远程端口。理查德·史蒂文斯 (Richard Stevens) 在《2.7 请》中解释了这一点 解释一下 TIME_WAIT 状态。''。

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

绑定失败:地址已被使用 的相关文章

随机推荐

  • 如何在 Django 中按类别过滤产品?

    我正在尝试根据类别进行过滤 但它在每个类别页面上显示所有产品 但我想根据类别页面进行过滤 请检查我的代码并让我知道如何做到这一点 这是我的models py file class SubCategory models Model subca
  • 使用 CSS 将图像在屏幕上居中 - 随机屏幕/图像尺寸

    我必须创建一个网页 出于此问题的目的 该网页是在屏幕中心垂直和水平居中的单个图像 它有以下要求 客户端屏幕尺寸未知 移动端 该图像是用户定义的 因此尺寸未知 图像必须在所有设备上完全垂直和水平居中 图像居中必须在屏幕旋转过程中保持不变 即从
  • 在 Emberjs / Ember-cli 中禁用/关闭 LiveReload 服务器

    我使用 Cloud9 IDE 它仅公开端口 80 并阻止 LiveReload 连接 我收到此错误 GET https myapp c9 io 35729 livereload js snipver 1 https myapp c9 io
  • 从时间戳中提取时间

    我正在尝试从 ISO8601 时间戳中提取时间部分 例如从以下时间戳开始 0001 01 01T17 45 33 我想提取这部分 17 45 33 你有几个选择 假设您将它放在一个名为的变量字符数组中string 现在 如果您知道时间始终位
  • Rails 缓存的默认过期时间是多少?

    我已经做了一些谷歌搜索 但找不到这个问题的答案 Rails 允许为其缓存指定过期时间 如下所示 Rails cache fetch my var expires in gt 10 seconds 但是如果我什么都不指定会发生什么 Rails
  • 处理对话框流中的音频播放完成回调(媒体响应)

    我正在通过播放来处理意图MediaObject 我想创建一个意图处理程序来捕获媒体播放完成的回调 文档 https developers google com actions assistant responses media respon
  • 正则表达式部分隐藏电子邮件? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想要实现
  • 本地化 JFileChooser“所有文件”字符串

    我正在使用 JFileChooser 开发一个 java 应用程序 用户可以切换语言 Locale setDefault Locale ENGLISH JFileChooser chooser new JFileChooser choose
  • 动态更改 ASP.Net 中的用户控件

    我正在尝试创建一个网页 该网页将根据下拉列表的选定值显示适当的用户控件 基本上页面布局是这样的 下拉选择 lt 基于下拉选择创建的用户控件 gt 我已经一半工作了 当选择改变时 控件也会改变 在 OnInit 中 我动态创建最后选定的控件
  • 过滤 Pandas 数据帧而不删除行

    我正在尝试使用where在我的 Pandas DataFrame 上替换所有不符合我的标准的单元格NaN 但是 我希望以始终保留原始 DataFrame 的形状的方式进行操作 并且不会从生成的 DataFrame 中删除任何行 给定以下数据
  • 如何将qml文件重新加载到QQuickView

    将 qml 文件重新加载到 QQuickView 的正确方法是什么 我正在使用 Qt Quick 2 1 并尝试编写一个简单的程序来加载 qml 文件并显示它 目前 我正在通过创建 QQuickView 来完成此操作 当我想重新加载 qml
  • 读一剪!在序言中

    我正在阅读同时阅读 Bratko 的 人工智能 Prolog 编程 第 5 章 控制回溯 起初 剪切似乎是模仿其他编程语言中已知的 if else 子句的直接方法 例如 Find the largest number max X Y Y X
  • android:如何在我的应用程序中实现像 Go Launcher 这样的首次教程?

    Go Launcher 有一个很好的初次使用教程 它与 Stock ICS 首次运行非常相似 我想学习如何在第一次启动我的应用程序时显示类似的教程 如何在我的 Android 应用程序中实现这个透明视图 与屏幕对象交互 我试图做相似的东西
  • 如何创建根据另一列计算的列?

    我需要创建一个专栏age在 SQL Server 数据库中 该列的值应根据该列的值计算DOB 它的值也应该增加Age增加 您应该使用计算列来解决此问题 其定义与此类似 ALTER TABLE Customers ADD Age AS dat
  • 如何让div换行

    我是CSS初学者 我想像这样将新的 div 放入新行中 我尝试这样的代码 div div
  • css 内联块和引导网格系统输出

    我正在尝试有一个具体的HTML我的 div 的标记使用css and bootstrap 3 2 下图展示了我想要得到的结果 我使用了引导网格系统 以便我的页面能够响应并在小屏幕设备中正确显示 这是我尝试过的代码 我用过http www b
  • 与字符串数字匹配 - 无法访问的代码

    scala 新手 似乎无法让我的匹配表达式工作 我已经了解了语句评估方式之间的差异 例如 一个新变量与声明的变量相对 但似乎无法使反引号或大写起作用 declared inside of object val numberOne 17201
  • Jersey:将值从 ContainerRequestFilter 传递到端点

    我正在使用 Jersey 2 9 并且创建了一个过滤器 它将采用加密的标头值 对其进行解密 然后将其传递到被调用的端点 我不知道如何做到这一点 我一直在互联网上搜索 但没有真正找到我想做的事情的具体例子 过滤器被调用 我只是在将值从过滤器传
  • 有没有办法将正则表达式更改为 Ruby on Rails 中的数字范围?

    我经常需要在正则表达式中创建数字范围 所以例如 2 3 0 9 是 20 39 之间的数字范围 为了仔细检查我的范围 我通常使用 Linux 命令 对于 2 3 0 9 Linux 命令为 seq 1 40 egrep 2 3 0 9 它为
  • 绑定失败:地址已被使用

    我正在尝试将套接字绑定到以下端口 if bind socket desc struct sockaddr server sizeof server lt 0 perror bind failed Error return 1 puts bi