当前位置: 技术问答>linux和unix
如何清除被之前程序占用的port?
来源: 互联网 发布时间:2016-07-29
本文导语: 一个程序与对端用UDP通信,通过socket与IP地址和port绑定。 被kill -9杀掉后,重启这个程序,发现发给对端程序的消息,对端可以收到。但是对端发过来的消息,这个程序收不到。 怀疑是因为在被kill -9杀掉时,port没...
一个程序与对端用UDP通信,通过socket与IP地址和port绑定。
被kill -9杀掉后,重启这个程序,发现发给对端程序的消息,对端可以收到。但是对端发过来的消息,这个程序收不到。
怀疑是因为在被kill -9杀掉时,port没有被正确的释放,导致第二次起来的程序无法通过这个port来接收消息。
有什么好方法吗?
被kill -9杀掉后,重启这个程序,发现发给对端程序的消息,对端可以收到。但是对端发过来的消息,这个程序收不到。
怀疑是因为在被kill -9杀掉时,port没有被正确的释放,导致第二次起来的程序无法通过这个port来接收消息。
有什么好方法吗?
|
bind前设置一下:
flags = 1;
setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void *)&flags, sizeof(flags));
flags = 1;
setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void *)&flags, sizeof(flags));
|
如果是因为TIME_WAIT状态导致关闭后无法重新绑定端口,可以用setsockopt来设置端口搞定。
http://blog.csdn.net/hairetz/archive/2009/04/16/4083389.aspx
但是你这里好像没有出现port无法绑定吧?
http://blog.csdn.net/hairetz/archive/2009/04/16/4083389.aspx
但是你这里好像没有出现port无法绑定吧?