绑定失败:地址已被使用

2024-10-24 08:50:00
admin
原创
265
摘要:问题描述:我正在尝试将套接字绑定到以下端口:if( bind(socket_desc,(struct sockaddr *) &server, sizeof(server)) < 0) { perror("bind failed. Error&q...

问题描述:

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

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

为什么会出现这个错误?


解决方案 1:

每个人都是正确的。但是,如果您也忙于测试代码,那么您自己的应用程序可能仍然“拥有”套接字(如果它启动和停止相对较快)。尝试SO_REUSEADDR作为套接字选项:

SO_REUSEADDR 到底起什么作用?

此套接字选项告诉内核,即使此端口繁忙(处于 TIME_WAIT 状态),也请继续重用它。如果它繁忙,但处于其他状态,您仍会收到地址已在使用中的错误。如果您的服务器已关闭,然后在其端口上的套接字仍处于活动状态时立即重新启动,则此功能很有用。您应该意识到,如果有任何意外数据进入,可能会使您的服务器感到困惑,但尽管这种情况是可能的,但可能性不大。

Michael Hunter ( mphunter@qnx.com ) 指出:“套接字是 5 元组 (proto、本地地址、本地端口、远程地址、远程端口)。SO_REUSEADDR 只是表示您可以重用本地地址。5 元组仍然必须是唯一的!”这是真的,这就是为什么您的服务器不太可能看到意外数据的原因。危险在于这样的 5 元组仍然在网络上浮动,当它四处浮动时,来自同一客户端、同一系统的新连接恰好获得相同的远程端口。Richard Stevens 在“2.7 请解释 TIME_WAIT 状态”中对此进行了解释。

解决方案 2:

Address already in use意味着port您尝试为当前执行分配的资源已被其他进程占用/分配。

如果您是开发人员,并且正在开发需要大量测试的应用程序,则您可能会在后台运行同一应用程序的实例(可能是您忘记正确停止它)

因此,如果您遇到此错误,只需查看哪个应用程序/进程正在使用该端口。

在 Linux 中尝试使用netstat -tulpn。此命令将列出所有正在运行的进程的进程列表。

检查是否有应用程序正在使用您的端口。 如果该应用程序或进程是另一个重要的应用程序或进程,那么您可能需要使用其他未被任何进程/应用程序使用的端口。

无论如何,您都可以停止使用您的端口的进程并让您的应用程序使用它。

如果你在 Linux 环境中尝试,

  • 用于netstat -tulpn显示进程

  • kill <pid>这将终止进程

如果你使用的是 Windows,

  • 用于netstat -a -o -n检查端口使用情况

  • 用来taskkill /F /PID <pid>终止该进程

解决方案 3:

您有一个正在使用该端口的进程。netstat -tulpn将使人们能够找到正在使用特定端口的进程 ID。

解决方案 4:

此错误通常意味着您尝试打开的端口已被其他应用程序使用。尝试使用 netstat 查看哪些端口已打开,然后使用可用的端口。

还要检查您是否绑定了正确的 IP 地址(我假设它是本地主机)

解决方案 5:

如果地址已被使用,您是否只想杀死正在使用该端口的所有进程,您可以使用

lsof -ti:端口号转到此处 | xargs杀-9

来源和灵感。

PS:无法使用 netstat,因为它尚未安装。

解决方案 6:

如上所述,该端口已被使用。这可能是由于以下几个原因

  1. 其他一些应用程序已在使用它。

  2. close_wait当您的程序正在等待另一端关闭程序时,端口处于状态。请参阅( https://unix.stackexchange.com/questions/10106/orphaned-connections-in-close-wait-state)。

  3. 该程序可能处于time_wait状态。您可以等待或使用SO_REUSEADDR另一篇文章中提到的套接字选项。

检查一下netstat -a | grep <portno>港口状况。

解决方案 7:

当您没有授予您的 sock 文件足够的权限(读写)时,也会发生这种情况!

只需将预期的权限添加到包含 sock 的文件夹和 sock 文件即可:

 chmod ug+rw /path/to/your/
 chmod ug+rw /path/to/your/file.sock

那就玩得开心吧!

解决方案 8:

检查正在运行的进程 pid:

pidof <process-name>

终止进程:

sudo kill -9 process_id_1 process_id_2 process_id_3

解决方案 9:

我也遇到过这个问题,但我解决了。
确保客户端和服务器端的程序都在IDE 中的不同项目中,在我的情况下是 NetBeans。然后假设您使用的是本地主机,我建议您将这两个程序作为两个不同的项目来实现。

解决方案 10:

首先检查正在监听哪个端口,

netstat -tlpn

然后选择可用的端口进行连接,

sudo netstat -tlpn | grep ':port'

将其修复到您的服务器和客户端接口中。转到 Barrier 选项卡 -> 更改设置,-> 端口值类型 -> 保存/确定

在此处输入图片描述

检查客户端和服务器是否具有相似的端口值

然后重新加载。

现在应该没问题了。

解决方案 11:

终止所有节点进程:

killall -9 node

解决方案 12:

“地址已被使用”当您的服务试图占用一个端口(固定端口,比如 49999)但该端口正被其他服务或进程使用时,可能会出现此错误。

您需要发现您的服务是否始终需要这个端口(例如 49999)?

如果是,那么您需要查看哪些其他服务/进程正在使用您需要的端口,然后您就可以对此有所了解。

现在检查服务器中的临时端口范围,如果您需要的端口号在临时范围内,则可能会随机收到此错误。要解决此问题,请使用不在临时范围内的端口号或更新服务器上的临时范围。

sysctl net.ipv4.ip_local_port_range 

https://en.wikipedia.org/wiki/Ephemeral_port

32768–end 是 unix 服务器上最常见的范围

如何更新:#echo 50000 65535 > /proc/sys/net/ipv4/ip_local_port_range

通过减少短暂范围可能会引入新的错误,请谨慎使用!

解决方案 13:

我应该使用ssh -L选项创建一个隧道,让它在终端中运行,然后ssh -p在另一个终端中使用通过隧道建立 ssh 连接。

我执行了ctrl+r,通常会得到ssh -p。但是,由于我重新启动了笔记本电脑,它再次ctrl+r给了我ssh -L命令。

因此,我执行了ssh -L两次,想知道为什么第二个命令不起作用:-P

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2588  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1553  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   31  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   26  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   21  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用