linux套接字:在C中关闭套接字

Yan Li

我使用Ctrl-C终止服务器,我认为它将立即关闭套接字。但是事实证明,如果我绑定相同的端口,它将说绑定失败。我使用的是Mac OSX。有什么想法吗?我什至为ctrl C实现了信号处理程序以将其关闭,但仍然存在相同的问题。

亚当·鲁佩

您可以在绑定它之前消除此错误(至少在Linux上,我不了解OSX)

 int on = 1;
 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, on.sizeof); // or sizeof(on) in C

当套接字关闭时,内核会保留一个句柄,以防电线上仍有一些待处理的数据乱序或延迟到达,因此它可以通过告诉另一端现在已经关闭来理智地处理它而不是将这些随机块传递给下一个应用程序。如果您想了解更多信息,则称为“ time_wait”状态。释放所有内容需要几分钟,以确保所有内容都清晰可见。

这个重用addr选项告诉它不必担心,只要没有等待时间就重新绑定即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的套接字:关闭套接字的正确方法

来自分类Dev

在 PHP 中关闭套接字

来自分类Dev

C ++ Windows套接字-在程序退出时关闭套接字

来自分类Dev

Linux中的套接字连接

来自分类Dev

getSession关闭套接字

来自分类Dev

关闭网络套接字

来自分类Dev

getSession关闭套接字

来自分类Dev

C ++中的套接字接收

来自分类Dev

在C ++中关闭套接字是否有任何限制?

来自分类Dev

在子进程中关闭打开的套接字

来自分类Dev

R中的ZeroMQ,如何关闭套接字

来自分类Dev

从崩溃的程序中关闭打开的套接字

来自分类Dev

如何关闭python中的套接字连接?

来自分类Dev

C#套接字编程,关闭窗口

来自分类Dev

C#所有套接字关闭

来自分类Dev

无法按Ctrl + C关闭套接字

来自分类Dev

C#所有套接字关闭

来自分类Dev

无法按Ctrl + C关闭套接字

来自分类Dev

linux中的分段错误(C中的套接字编程(TCP))

来自分类Dev

linux中的分段错误(C中的套接字编程(TCP))

来自分类Dev

如何确定C ++中Linux套接字绑定到的接口

来自分类Dev

何时关闭UDP套接字

来自分类Dev

SocketException:套接字已关闭

来自分类Dev

PoolingClientConnectionManager如何关闭套接字

来自分类Dev

从主线程关闭套接字

来自分类Dev

从C读取套接字

来自分类Dev

异步C ++套接字

来自分类Dev

从C读取套接字

来自分类Dev

在Linux中在套接字上选择慢