socket.shutdown与socket.close
问题内容:
我最近看到了一些看起来像这样的代码(袜子当然是套接字对象):
sock.shutdown(socket.SHUT_RDWR)
sock.close()
在套接字上调用shutdown然后关闭它的目的到底是什么?如果有所不同,则此套接字用于非阻塞IO。
问题答案:
这是一个解释:
一旦不再需要套接字,调用程序就可以通过对套接字描述符应用close子例程来丢弃套接字。如果在关闭时可靠的传输套接字具有与之关联的数据,则系统将继续尝试进行数据传输。但是,如果仍未交付数据,则系统将丢弃该数据。如果应用程序不使用任何暂挂数据,则可以在关闭套接字之前使用套接字上的shutdown子例程。