Bind : Address already in use
最近在学习C/S架构的程序书写,总是会遇到:Address already in use!简单来说,就是占用,但是不知道是IP占用,还是port占用。最主要的是不管是ps(l)还是netstat(l),竟然查不到相关进程。想杀都不知道杀谁了。
查询相关资料后,觉得应该是套接字的内在隐患:
bind 总是试图绑定一个正在使用的端口,而TCP套接字状态TIME_WAIT会造成,在该套接字关闭后保留2-4min。所以这种情况下,经查询进程已经被干掉之后,如果还是占用报错,那就等等就OK了。
常用命令:
netstat -tanlp
//这个命令会显示当前与网络相关的进程
kill -9 pid
//-9表示强制杀死,pid表示想结束的进程
注意:
最好在测试自己的程序时,后来执行,因为会立刻返回相应的进程ID,方便后续结束。如:
./tcpserver &
//&就表示让其后台执行