socket.error: [Errno 98] Address already in use
Ctrl-C
终止 socket 程序之后,出现如下报错,一般需要等一会儿才能再次运行程序。
Traceback (most recent call last):
File "server_5000.py", line 10, in <module>
sk.bind(ip_port) # 绑定 IP、端口;
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
有以下四种解决方法:
一、等
大概等 30 秒左右或者更长时间,等内存空间释放掉便可以继续运行 socket 程序了。
二、修改端口
当该端口被其他进程占用时,修改一个未使用的端口号重新运行。
三、kill 端口进程
执行 netstat -nlp | grep :端口号
,查看当前使用该端口的进程,得到进程号。
sudo netstat -nlp | grep 5000
sudo kill 进程号
四、kill 父进程
当一个进程持续杀不死,杀死之后换一个 PID 继续占用该端口时,可能是有一个父进程持续生成占用该端口的子进程。
执行 ps -ef | grep 子进程号
,根据返回信息获取父进程号,杀死该父进程。
ps -ef | grep 子进程号