©
本文档使用 PHP中文网手册 发布
(PHP 4 >= 4.1.0, PHP 5)
socket_shutdown — Shuts down a socket for receiving, sending, or both
$socket
[, int $how
= 2
] )
The socket_shutdown() function allows you to stop
incoming, outgoing or all data (the default) from being sent through the
socket
socket
A valid socket resource created with socket_create() .
how
The value of how
can be one of the following:
0 | Shutdown socket reading |
1 | Shutdown socket writing |
2 | Shutdown socket reading and writing |
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
[#1] recycling dot sp dot am at gmail dot com [2010-09-16 09:09:06]
Shutdown and SOL_TCP:
<?php
$a= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_shutdown($a, 2)
?>
PHP Warning: socket_shutdown(): unable to shutdown socket [107]: Transport endpoint is not connected
Shutdown and SOL_UDP:
<?php
$a= socket_create(AF_INET, SOCK_STREAM, SOL_UDP);
socket_shutdown($a, 2)
?>
PHP Warning: socket_shutdown(): unable to shutdown socket [107]: Transport endpoint is not connected
Conclusion: if you are not actually connected, shutdown will fails with socket_error = 107, Transport endpoint is not connected. This is true for both TPC and UDP connection (which is suprising, UDP being a connectionless protocol). This is true no matter the value set for the how parameter.
[#2] richard dot thomas at psysolutions dot com [2005-11-23 10:20:35]
That is not a good example of a graceful shutdown. One should close the sending side of the socket and continue to read until the remote end closes its sending connection.
[#3] ludvig dot ericson at gmail dot com [2005-09-02 13:13:29]
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>