当前位置: 技术问答>linux和unix
Linux socket close后重新启动server的问题
来源: 互联网 发布时间:2017-02-26
本文导语: 初接触socket编程,自己仿照书上例子写了一个短小的程序,遇到了点问题,如下: server和client正常连接后,如果client发送字符串“close”,server收到后就调用close()这个接口,程序执行完毕并退出,这都没有问题,但...
初接触socket编程,自己仿照书上例子写了一个短小的程序,遇到了点问题,如下:
server和client正常连接后,如果client发送字符串“close”,server收到后就调用close()这个接口,程序执行完毕并退出,这都没有问题,但是在调试过程中,我马上又启动server的话,就会提示说Bind:Address already in use。但如果过一会再启动server的话,就不存在这个问题了。
想请教大家,close()不能马上关闭socket吗?
server和client正常连接后,如果client发送字符串“close”,server收到后就调用close()这个接口,程序执行完毕并退出,这都没有问题,但是在调试过程中,我马上又启动server的话,就会提示说Bind:Address already in use。但如果过一会再启动server的话,就不存在这个问题了。
想请教大家,close()不能马上关闭socket吗?
|
错, 除非开启SO_LINGER选项并设置非0等待时间,否则close永远立即返回,并且端口将会立即进入TIME_WAIT状态而导致一段时间内无法重用,不过是可以优化TCP参数文件将这个状态忽略掉。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。