我试图在端口号8000
处绑定我的套接字(服务器套接字).它为我起了作用.代码结束时,我也关闭了插座.就在下一刻,我再次运行我的代码,它显示我的地址已经在使用中.我已经打印了错误值strerror(errno);
的含义,以查看我的代码在每一点上是否正常工作.为了判断端口是否空闲,我使用netstat
进行了判断,但它显示端口号8000
是空闲的.这种事在我身上发生过很多次.每次我再等几秒钟,它就又开始工作了.我用的是c语言.那么我的操作系统做出这种行为的原因是什么呢.
再过几秒后,我运行代码,然后它就可以工作了.
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo ./a.out
Socket Creation: Success
File open: Success
Socket Bind: Address already in use
Socket Listen: Address already in use
^C
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1348/lighttpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 984/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1131/cupsd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1211/mysqld
tcp6 0 0 :::22 :::* LISTEN 984/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1131/cupsd
anirudh@anirudh-Aspire-5920:~/Desktop/testing$ sudo ./a.out
Socket Creation: Success
File open: Success
Socket Bind: Address already in use
Socket Listen: Address already in use
^C
anirudh@anirudh-Aspire-5920:~/Desktop/testing$