bind出现Address already in use

如果先ctrl+c结束服务器端程序的话,再次启动服务器就会出现Address already in use这个错误,或者你的程序在正常关闭服务器端socket后还是有这个问题

bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该陷阱是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后,套接字被删除,该地址才能被重新绑定而不出问题。

等待 TIME_WAIT 结束可能是令人恼火的一件事,特别是如果您正在开发一个套接字服务器,就需要停止服务器来做一些改动,然后重启。幸运的是,有方法可以避开 TIME_WAIT 状态。可以给套接字应用 SO_REUSEADDR 套接字选项,以便端口可以马上重用。

但是对于LISTEN 端口

即使你设置了 SO_REUSEADDR选项,对于LISTEN状态的端口,也是不能重复监听的

如何解决呢?

例如要关闭22号端口:
 
 
 
$ netstat -anp | grep :22
tcp   0    0 0.0.0.0:22      0.0.0.0:*     LISTEN     1666/sshd
 
 
# -a 显示所有活动的TCP连接,以及正在监听的TCP和UDP端口
 
# -n 以数字形式表示地址和端口号,不试图去解析其名称(number)
 
# -p 列出与端口监听或连接相关的进程(有个地方需要注意,下面会提到)(pid)
 
 
 
知道了22号端口对应的进程ID 1666,只要:
 
$ kill 1666
即可。

bind出现Address already in use,布布扣,bubuko.com

时间: 2024-11-06 12:01:51

bind出现Address already in use的相关文章

[Apache]apache2不能启动的解决办法(提示could not bind to address 0.0.0.0:80)

昨晚重装了电脑,原来装的是win2003,后来中毒后杀完毒还能用就继续用着,只是运行不了新安装的软件,后来实在没办法才重装了XP,但是装完出现一个问题,系统居然装在了L盘,原来的D盘到J盘依此类推往前进了一位即从C盘到I盘~~原来的xampp装在了D盘,现在变成了C盘,打开XAMPP-Control面板,启动不了apache,后来想起apache/conf/httpd.conf里面的设置有问题,于是把所有的路径有关的设置都由原来的D:改为C:,发现还是不行,于是运行apache_start.ba

Linux 启动 Apache 时报错:(98)Address already in use: make_sock: could not bind to address [::]:80

1. 启动 Apache 时报错: [[email protected] sh]# service httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName (98)Address already in use: make_sock: could not bi

ERROR: transport error 202: bind failed: Address already in use

ERROR: transport error 202: bind failed: Address already in use ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:

Linux下Socket编程的端口问题( Bind error: Address already in use )

Linux下Socket编程的端口问题( Bind error: Address already in use ) 在进行linux网络编程时,每次修改了源代码并再次编译运行时,常遇到下面的地使用错误: Bind error: Address already in use 虽然用Ctrl+C强制结束了进程,但错误依然存在,用netstat -an |grep 5120和ps aux |grep 5120都还能看到刚才用Ctrl+C“强制结束”了的进程,端口还是使用中,只好每次用kill结束进程,

apache启动报错(98)Address already in use: make_sock: could not bind to address [::]:80

# /usr/local/apache2/bin/apachectl start Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80no listening sockets available, shutting downU

SSH 服务启动时出现如下错误:fatal: Cannot bind any address

注意:本文相关配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试.其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档. 问题描述 云服务器 ECS (Elastic Compute Server) Linux 服务器启动 SSH 服务时,命令行或 secure日志出现类似如下错误信息: FAILED. fatal: Cannot bind any address. address family must be specified before Listen

(98)Address already in use: make_sock: could not bind to address 80 [resolved] (2012-10-11 09:04)

以前遇到一个问题: sudo /etc/init.d/apache2 start * Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName (98)Address already in use: make_sock: could not bind to address 0.0

httpd 启动报错“”Permission denied: make_sock: could not bind to address [::]:80“”

今天闲来无事复习一下普通用户httpd源码的安装,安装过程不赘述,在启动过程中提示错误 [[email protected] bin]$ ./httpd -k start httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.56.115 for ServerName (13)Permission denied: make_sock: could not bind t

could not bind to address 0.0.0.0:80 no listening sockets available, shutting down

在启动apache服务的时候(service httpd start 启动)出现这个问题. 出现这个问题,是因为APACHE的默认端口被占用的缘故.解决方法就是把这个端口占用的程序占用的端口去掉. 使用命令:netstat -lnp|grep 80  查看80端口使用 如:tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26703/apache2 kill -9 26703杀死这个进程