初始化套接字时出错:port = 6000。地址已在使用中

时间:2012-04-23 23:32:00

标签: linux

我推出了一个模拟器程序,它在我的Ubuntu 11中用C ++开发,当我想要从Linux的进程列表中删除这个进程并想再次运行它时,我遇到了这个错误:

Error initializing sockets: port=6000. Address already in use

我使用lsof命令查找进程的PID:

saman@jack:~$ lsof -i:6000
COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rcssserve 8764 saman    3u  IPv4  81762      0t0  UDP *:x11

之后我试图杀死8764的PID。但仍然有错误。 我该如何解决?

2 个答案:

答案 0 :(得分:2)

我认为您遇到的问题是套接字如果没有正确关闭,那么它仍然保留并等待内核关闭超时。

尝试执行netstat -nutap并查看是否有这样的行:

tcp        0      0 AAA.AAA.AAA.AAA:6000     XXX.XXX.XXX.XXX:YYYY       TIME_WAIT   -

如果是这种情况,你只需要等到内核掉线(大约30秒),直到你可以在没有冲突的情况下打开套接字

答案 1 :(得分:0)

似乎端口6000被X窗口系统(linux的GUI部分)使用,并且当你终止进程时可能刚刚重新启动...要么你需要在没有运行X-windows的情况下运行模拟,或者你调整代码以使用不同的端口..