我在这里看到很多答案,说要使用close()破坏套接字,但是我从msdn使用的指南让我使用closesocket()。我想知道是否存在差异,以及是否有使用其中一个的理由。
在这两种情况下,我都看到使用shutdown()的建议,这很好。
close()
是* nix函数。它可以在任何文件描述符上运行,并且* nix中的套接字是文件描述符的示例,因此它也可以正确关闭套接字。
closesocket()
是Windows特有的功能,专门用于套接字。Windows上的套接字不使用* nix样式的文件描述符,socket()
而是返回内核对象的句柄,因此必须使用来关闭它closesocket()
。
我感到可耻的是BSD插槽不包含特定的socket
功能对应部分,可以在任何地方使用-但这就是生命。
最后但并非最不重要的一点是,不要将shutdown
套接字与关闭套接字混淆。shutdown()
停止套接字上的传输,但是套接字保留在系统中,并且与之关联的所有资源都保留。关闭插座后,您仍然需要关闭插座。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句