Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define("SERVER_ADDR", "localhost");
- define("SERVER_PORT", "1234");
- $server_socket = false;
- if (! ($server_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
- die("socket_create failed: ". socket_strerror(socket_last_error()));
- }
- if (! socket_set_option($server_socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
- die("socket_set_option failed: ". socket_strerror(socket_last_error()));
- }
- if (! socket_set_nonblock($server_socket)) {
- die("socket_set_nonblock failed: ". socket_strerror(socket_last_error()));
- }
- if (! socket_bind($server_socket, SERVER_ADDR, SERVER_PORT)) {
- die("socket_bind failed: ". socket_strerror(socket_last_error()));
- }
- if (! socket_listen($server_socket)) {
- die("socket_listen failed: ". socket_strerror(socket_last_error()));
- }
- $clients = array();
- while (1) {
- $read = $clients;
- $read[] = $server_socket;
- $write = null;
- $except = null;
- $rv = socket_select($read, $write, $except, 0, 100000);
- if ($rv === false) {
- socket_close($server_socket);
- die("select() returned false: ". socket_strerror(socket_last_error()) );
- }
- if ($rv) {
- foreach($read as $fd) {
- if ($fd == $server_socket) {
- $client = socket_accept($server_socket);
- if (!$client) {
- socket_close($server_socket);
- die("socket_accept() failed: ". socket_strerror(socket_last_error()) );
- }
- $clients[] = $client;
- } else {
- // will only reliably work if data comes in small chunks
- $data = socket_read($fd, 4096);
- .........
- }
- }
- } else {
- // timeout
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement