Advertisement
Guest User

Untitled

a guest
Jan 7th, 2011
716
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.54 KB | None | 0 0
  1. define("SERVER_ADDR", "localhost");
  2. define("SERVER_PORT", "1234");
  3.  
  4. $server_socket = false;
  5.  
  6. if (! ($server_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
  7.     die("socket_create failed: ". socket_strerror(socket_last_error()));
  8. }
  9.  
  10. if (! socket_set_option($server_socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
  11.     die("socket_set_option failed: ". socket_strerror(socket_last_error()));
  12. }
  13.  
  14. if (! socket_set_nonblock($server_socket)) {
  15.     die("socket_set_nonblock failed: ". socket_strerror(socket_last_error()));
  16. }
  17.  
  18. if (! socket_bind($server_socket, SERVER_ADDR, SERVER_PORT)) {
  19.     die("socket_bind failed: ". socket_strerror(socket_last_error()));
  20. }
  21. if (! socket_listen($server_socket)) {
  22.     die("socket_listen failed: ". socket_strerror(socket_last_error()));
  23. }
  24.  
  25. $clients = array();
  26.  
  27. while (1) {
  28.     $read = $clients;
  29.     $read[] = $server_socket;
  30.     $write = null;
  31.     $except = null;
  32.    
  33.     $rv = socket_select($read, $write, $except, 0, 100000);
  34.    
  35.     if ($rv === false) {
  36.         socket_close($server_socket);
  37.         die("select() returned false: ". socket_strerror(socket_last_error()) );
  38.     }
  39.  
  40.     if ($rv) {
  41.         foreach($read as $fd) {
  42.             if ($fd == $server_socket) {
  43.                 $client = socket_accept($server_socket);
  44.                
  45.                 if (!$client) {
  46.                     socket_close($server_socket);
  47.                     die("socket_accept() failed: ". socket_strerror(socket_last_error()) );
  48.                 }
  49.                
  50.                 $clients[] = $client;
  51.             } else {
  52.                 // will only reliably work if data comes in small chunks
  53.                 $data = socket_read($fd, 4096);
  54.                
  55.                 .........
  56.             }
  57.         }
  58.     } else {
  59.         // timeout
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement