Eni*_*gma 8 c++ sockets networking winsock2
我在这里看到很多答案,说使用close()来销毁套接字,但是我从msdn使用的指南让我使用closesocket().我想知道是否有差异,是否有理由使用其中一个.
在这两种情况下,我都看到使用shutdown()的建议,所以这一切都很好.
Ser*_*eyA 14
close()是一个*nix函数.它适用于任何文件描述符,*nix中的套接字是文件描述符的一个示例,因此它也可以正确关闭套接字.
closesocket()是一个特定于Windows的函数,它专门用于套接字.Windows上的套接字不使用*nix样式的文件描述符,socket()而是返回内核对象的句柄,因此必须使用它来关闭closesocket().
我发现BSD套接字不包含socket功能的特定对应物,这可以在任何地方使用 - 但这就是生命,这是相当可耻的.
最后但并非最不重要的是,不要混淆shutdown插座和关闭插座.shutdown()停止套接字上的传输,但套接字保留在系统中,并且与之关联的所有资源都保留.关闭后仍需要关闭套接字.