Tryag File Manager
Home
||
Turbo Force
||
B-F Config_Cpanel
Current Path :
/
home
/
egg.eemo.co.kr
/
public_html
/
Or
Select Your Path :
Upload File :
New :
File
Dir
//home/egg.eemo.co.kr/public_html/test_sock3.php
<? error_reporting(E_ALL); /* Allow the script to hang around waiting for connections. */ set_time_limit(0); /* Turn on implicit output flushing so we see what we're getting as it comes in. */ ob_implicit_flush(); $address = '0.0.0.0'; $port = 9090; // create a streaming socket, of type TCP/IP $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1); socket_bind($sock, $address, $port); socket_listen($sock); // create a list of all the clients that will be connected to us.. // add the listening socket to this list $clients = array($sock); while (true) { // create a copy, so $clients doesn't get modified by socket_select() $read = $clients; $write = null; $except = null; // get a list of all the clients that have data to be read from // if there are no clients with data, go to next iteration if (socket_select($read, $write, $except, 1000) < 1) continue; // check if there is a client trying to connect if (in_array($sock, $read)) { $clients[] = $newsock = socket_accept($sock); //socket_write($newsock, "There are ".(count($clients) - 1)." client(s) connected to the server\n"); echo "now ".(count($clients) - 1)." clients connected\n"; socket_getpeername($newsock, $ip, $port); echo "New client connected: ip : {$ip} , port : {$port}\n"; $key = array_search($sock, $read); unset($read[$key]); } // loop through all the clients that have data to read from foreach ($read as $read_sock) { // read until newline or 1024 bytes // socket_read while show errors when the client is disconnected, so silence the error messages $data = @socket_read($read_sock, 4096); // check if the client is disconnected if ($data == null) { // remove client for $clients array $key = array_search($read_sock, $clients); unset($clients[$key]); echo "client disconnected. sock id : {$read_sock}\n"; socket_close($read_sock); continue; } $data = trim($data); if (!empty($data)) { echo " receive data : {$data} , from sock id : $read_sock\n"; // do sth.. // send some message to listening socket $response_data="response ok "; socket_write($read_sock, $response_data, strlen($response_data)); // send this to all the clients in the $clients array (except the first one, which is a listening socket) foreach ($clients as $send_sock) { if ($send_sock == $sock) continue; $response_data2="abcdef"; socket_write($send_sock, $response_data2, strlen($response_data2)); echo "we send sock id is {$send_sock}, message : {$response_data2} \n"; } // end of broadcast foreach } } // end of reading foreach } // close the listening socket socket_close($sock); ?>