有经验的程序员对 closesocket() 的担忧
Posted
技术标签:
【中文标题】有经验的程序员对 closesocket() 的担忧【英文标题】:A concern about closesocket() for experienced programmers 【发布时间】:2012-02-07 06:23:34 【问题描述】:我想我可以通过阅读 MSDN 对 closesocket 的描述来回答这个问题,我希望有经验的人之一确认它,因为 MSDN 只是从我读过的内容中暗示它。
WSAENOBUFS
是缺少对已使用套接字的 closesocket 调用的症状吗?
【问题讨论】:
【参考方案1】:WSAENOBUFS
错误消息的出现并不一定意味着它是缺少 closesocket 调用的症状。但它可能是。
如果您没有必要的资源或打开的套接字过多,系统会以此消息响应。但是,也可能是您适当地关闭了所有内容,但您尝试打开太多套接字或没有剩余资源。
【讨论】:
是的,我知道其他可能的解释,只是不知道会“抛出”哪个系统错误,所以我反过来问。感谢您的回答(也感谢 Ates 和 INS) 所以答案是肯定的。有一个上限,如果套接字未正确关闭,您有时会达到上限。【参考方案2】:是的,这可能是未关闭的套接字泄漏的症状。
【讨论】:
【参考方案3】:是的,这似乎与(左)打开的套接字数量有关;来自here。
【讨论】:
那是您在那里找到的一篇非常古老的文章。以上是关于有经验的程序员对 closesocket() 的担忧的主要内容,如果未能解决你的问题,请参考以下文章
Windows 中对套接字的 closesocket() 调用需要 20 秒 [关闭]