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.
socket_shutdown
(PHP 4 >= 4.1.0, PHP 5)
socket_shutdown — Éteint un socket en lecture et/ou écriture
Description
bool socket_shutdown
( resource
$socket
[, int $how = 2
] )
socket_shutdown() vous permet d'empêcher les données
entrantes ou sortantes ou les deux (par défaut) d'être émises via
le socket socket.
Liste de paramètres
-
socket -
Une ressource de socket valide, créée par la fonction socket_create().
-
how -
La valeur du paramètre
howpeut être une des valeurs suivantes :Valeurs possibles pour how0 Empêche la lecture du socket 1 Empêche l'écriture du socket 2 Empêche l'écriture et la lecture du socket
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
recycling dot sp dot am at gmail dot com
16-Sep-2010 09:09
korvin at biz dot by
21-May-2009 02:12
Closing socket graceful
<?php
socket_shutdown($resHandle, 1);//remote host yet can read
usleep(500);//wait remote host
socket_shutdown($resHandle, 0);//close reading
socket_close($resHandle);//finaly we can free resource
?>
richard dot thomas at psysolutions dot com
23-Nov-2005 10:20
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.
ludvig dot ericson at gmail dot com
02-Sep-2005 01:13
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>
