32 lines
795 B
PHP
32 lines
795 B
PHP
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
|
|
socket_bind($socket, '127.0.0.1', 12321);
|
|
socket_listen($socket);
|
|
|
|
$client_count = 0;
|
|
while (true){
|
|
if (($client = socket_accept($socket)) === false) continue;
|
|
$client_count++;
|
|
|
|
$client_name = 'Unknown';
|
|
socket_getpeername($client, $client_name);
|
|
echo "Client {$client_count} ({$client_name}) connected\n";
|
|
$pid = pcntl_fork();
|
|
if($pid == -1) die('Could not fork');
|
|
if($pid){
|
|
pcntl_waitpid(-1, $status, WNOHANG);
|
|
continue;
|
|
}
|
|
|
|
//In a child process
|
|
while(true){
|
|
if($input = socket_read($client, 1024)){
|
|
socket_write($client, $input);
|
|
} else {
|
|
socket_shutdown($client);
|
|
socket_close($client);
|
|
echo "Client {$client_count} ({$client_name}) disconnected\n";
|
|
exit();
|
|
}
|
|
}
|
|
}
|