<?php
$master = array();
$socket = stream_socket_server("tcp://0.0.0.0:8123", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
$master[] = $socket;
$read = $master;
while (1) {
$read = $master;
$mod_fd = stream_select($read, $_w = NULL, $_e = NULL, 5);
if ($mod_fd === FALSE) {
break;
}
for ($i = 0; $i < $mod_fd; ++$i) {
if ($read[$i] === $socket) {
$conn = stream_socket_accept($socket);
#fwrite($conn, "Connected. Local time is ".date("Y-m-d H:i:s a")."\n");
$master[] = $conn;
} else {
$sock_data = unserialize(fread($read[$i], 1024));
if (empty($sock_data)) { // connection closed
$key_to_del = array_search($read[$i], $master, TRUE);
fclose($read[$i]);
unset($master[$key_to_del]);
} else if ($sock_data === FALSE) {
echo "Something bad happened";
$key_to_del = array_search($read[$i], $master, TRUE);
unset($master[$key_to_del]);
} else {
echo "The client has sent :"; print_r($sock_data);
#fwrite($read[$i], "You have sent :[".print_r($sock_data)."]\n");
fclose($read[$i]);
unset($master[array_search($read[$i], $master)]);
}
}
}
}
}
<?php
function send($host,$timeout,$cmd)
{
$fp = stream_socket_client($host,$errno,$errstr,$timeout);
if (!$fp) echo "$errstr ($errno)\n";
else
{
fwrite($fp, serialize($cmd));
while (!feof($fp)) { return fgets($fp, 1024); }
fclose($fp);
return FALSE;
}
}
echo send('tcp://127.0.0.1:8123',30,array('message' => 'test'));