gpt4 book ai didi

c++ - close() 和 close socket() 可以互换吗?

转载 作者:可可西里 更新时间:2023-11-01 17:31:03 29 4
gpt4 key购买 nike

我在这里看到很多答案都说要使用 close() 来销毁套接字,但我使用的指南来自 msdn让我使用 closesocket()。我想知道是否存在差异,是否有理由使用其中一种。

在这两种情况下,我都看到了使用 shutdown() 的建议,所以一切都很好。

最佳答案

close() 是一个 *nix 函数。它适用于任何文件描述符,*nix 中的套接字是文件描述符的示例,因此它也可以正确关闭套接字。

closesocket() 是一个特定于 Windows 的函数,专门用于套接字。 Windows 上的套接字不使用 *nix 风格的文件描述符,socket() 而是返回内核对象的句柄,因此必须使用 closesocket() 关闭它。

我觉得 BSD 套接字不包含 socket 函数的特定对应部分是相当可耻的,它可以在任何地方使用 - 但这就是生活。

最后但并非最不重要的一点是,不要混淆关闭套接字和关闭套接字。 shutdown() 停止套接字上的传输,但套接字仍保留在系统中,并且与其关联的所有资源都保留。关闭后仍然需要关闭套接字。

关于c++ - close() 和 close socket() 可以互换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441815/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com