Cel*_*ada 14
无论如何,如果不关闭套接字,程序将泄漏文件描述符.程序通常只能打开有限数量的文件描述符,所以如果这种情况发生很多,它可能会变成一个问题.
如果套接字绑定到某个地址,则在关闭套接字之前,其他套接字都无法绑定到同一地址.如果它绑定到一个众所周知的端口(例如25或80),这将阻止任何其他东西绑定到该端口......这可能是您可能面临的最严重的问题.如果它绑定到一个短暂的端口,这不是那么重要,但是,仍然有有限数量的端口,如果这种情况发生了很多,那么你可能会用完.请注意,UDP套接字可以自由使用而不受约束,因此此问题可能不适用于UDP套接字.
如果套接字是监听套接字(listen()已在其上调用),则系统将继续接受此套接字上的连接(如果不关闭它)(但仅限于指定的积压限制listen()).
如果套接字是TCP套接字并且已连接,则除非套接字关闭或被shutdown()调用,否则TCP连接将不会关闭.因此,在这种情况下,shutdown()如果无法关闭套接字,至少应该确保调用.
总之,不关闭插座可能会导致一些或多或少重要的问题.通常,TCP可能会遇到比UDP更多的问题.当你完成它们时,你绝对应该关闭套接字!