perl关闭一个套接字

时间:2012-09-05 13:50:37

标签: perl sockets

之间有区别吗?
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吗?

1 个答案:

答案 0 :(得分:13)

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

shutdown不会释放文件描述符,因此仍然需要close

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