Browse Source
Added function stream_socket_shutdown(). It is a wraper for system shutdown() function, that shut downs part of a full-duplex connection
migration/RELEASE_1_0_0
Added function stream_socket_shutdown(). It is a wraper for system shutdown() function, that shut downs part of a full-duplex connection
migration/RELEASE_1_0_0
8 changed files with 162 additions and 1 deletions
-
11ext/standard/basic_functions.c
-
4ext/standard/file.c
-
30ext/standard/streamsfuncs.c
-
1ext/standard/streamsfuncs.h
-
65ext/standard/tests/network/shutdown.phpt
-
15main/streams/php_stream_transport.h
-
19main/streams/transports.c
-
18main/streams/xp_socket.c
@ -0,0 +1,65 @@ |
|||
--TEST-- |
|||
stream_socket_shutdown() test on IPv4 TCP Loopback |
|||
--SKIPIF-- |
|||
<?php |
|||
function_exists('stream_socket_shutdown') or die('skip stream_socket_shutdown() is not supported.'); |
|||
?> |
|||
--FILE-- |
|||
<?php |
|||
/* Setup socket server */ |
|||
$server = stream_socket_server('tcp://127.0.0.1:31337'); |
|||
if (!$server) { |
|||
die('Unable to create AF_INET socket [server]'); |
|||
} |
|||
|
|||
/* Connect and send request 1 */ |
|||
$client1 = stream_socket_client('tcp://127.0.0.1:31337'); |
|||
if (!$client1) { |
|||
die('Unable to create AF_INET socket [client]'); |
|||
} |
|||
@fwrite($client1, "Client 1\n"); |
|||
stream_socket_shutdown($client1, STREAM_SHUT_WR); |
|||
@fwrite($client1, "Error 1\n"); |
|||
|
|||
/* Connect and send request 2 */ |
|||
$client2 = stream_socket_client('tcp://127.0.0.1:31337'); |
|||
if (!$client2) { |
|||
die('Unable to create AF_INET socket [client]'); |
|||
} |
|||
@fwrite($client2, "Client 2\n"); |
|||
stream_socket_shutdown($client2, STREAM_SHUT_WR); |
|||
@fwrite($client2, "Error 2\n"); |
|||
|
|||
/* Accept connection 1 */ |
|||
$socket = stream_socket_accept($server); |
|||
if (!$socket) { |
|||
die('Unable to accept connection'); |
|||
} |
|||
@fwrite($socket, fgets($socket)); |
|||
@fwrite($socket, fgets($socket)); |
|||
fclose($socket); |
|||
|
|||
/* Read Response 1 */ |
|||
echo fgets($client1); |
|||
echo fgets($client1); |
|||
|
|||
/* Accept connection 2 */ |
|||
$socket = stream_socket_accept($server); |
|||
if (!$socket) { |
|||
die('Unable to accept connection'); |
|||
} |
|||
@fwrite($socket, fgets($socket)); |
|||
@fwrite($socket, fgets($socket)); |
|||
fclose($socket); |
|||
|
|||
/* Read Response 2 */ |
|||
echo fgets($client2); |
|||
echo fgets($client2); |
|||
|
|||
fclose($client1); |
|||
fclose($client2); |
|||
fclose($server); |
|||
?> |
|||
--EXPECT-- |
|||
Client 1 |
|||
Client 2 |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue