10

有没有区别

shutdown($socket, 0) if $socket;
shutdown($socket, 2) if $socket;
close($socket) if $socket;

shutdown($socket, 2) if $socket;
close($socket) if $socket;

也有区别

shutdown($socket, 1) if $socket;
shutdown($socket, 2) if $socket;
close($socket) if $socket;

shutdown($socket, 2) if $socket;
close($socket) if $socket;

最后是close需要的吗?

4

1 回答 1

13

shutdown导致 TCP 连接的一侧停止读取 ( 0) 或写入 ( 1) 或两者 ( 2)。所以前两个片段具有相同的效果,接下来的两个片段也是如此。

shutdown不释放文件描述符,所以close仍然需要。

closesingle和 one之间的区别在于shutdown( fd, 2 ),在第二种情况下,TCP 不会尝试将未完成的数据传递到远程端(请参阅 参考资料SO_LINGER)。

于 2012-09-05T14:07:20.320 回答