擅长:python、mysql、java
<p>调用<code>close</code>和<code>shutdown</code>对底层套接字有两种不同的影响。</p>
<p>首先要指出的是,套接字是底层操作系统中的一个资源,多个进程可以拥有同一底层套接字的句柄。</strong></p>
<p>当您调用<code>close</code>时,它会将句柄计数递减一,如果句柄计数已达到零,则套接字和相关连接将通过正常的关闭过程(有效地向对等方发送FIN/EOF)并释放套接字。</p>
<p>这里需要注意的是,如果由于另一个进程仍然有一个套接字句柄,因此句柄计数未达到零,则连接<strong>不会关闭,套接字也不会被释放。</strong></p>
<p>另一方面,调用<code>shutdown</code>进行读写将关闭底层连接并向对等方发送FIN/EOF,而不管有多少进程对套接字有句柄。但是,它不会释放套接字,您仍然需要在之后调用close。</p>