«мгновенно» может потребоваться заглянуть в сокеты
Когда информация отправляется через Интернет, она обычно разбивается на пакеты.Это позволяет отправлять большие файлы с множеством мелких фрагментов информации для последующего сбора на другом конце.
Существует два разных протокола для разделения информации на пакеты, в зависимости от типа отправляемой информации и требований к доставке.TCP (протокол управления передачей) - передаваемые пакеты нумеруются и собираются на другом конце, они собираются для формирования всего сообщения.TCP обычно работает через IP (интернет-протокол), отсюда и термин TCP / IP.
TCP гарантирует, что никакие данные не будут потеряны (если пакет потерян, он будет передан повторно), и, следовательно, хорошо подходит для отправки изображений, файлов или другой информации, которая должна быть получена как единое целое (например, вашЭл. адрес).UDP (User Datagram Protocol) - это протокол без установления соединения.Как и TCP, он может работать по протоколу IP.Разница в том, что UDP предоставляет мало услуг по восстановлению после ошибок, и поэтому нет гарантии, что конкретный пакет будет получен на другой стороне или в каком порядке будут получены пакеты.
Пример:
<?php
// Set time limit to indefinite execution
set_time_limit (0);
// Set the ip and port we will listen on
$address = '192.168.0.100';
$port = 9000;
// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// Bind the socket to an address/port
socket_bind($sock, $address, $port) or die('Could not bind to address');
// Start listening for connections
socket_listen($sock);
/* Accept incoming requests and handle them as child processes */
$client = socket_accept($sock);
// Read the input from the client – 1024 bytes
$input = socket_read($client, 1024);
// Strip all white spaces from input
$output = ereg_replace("[ \t\n\r]","",$input).chr(0);
// Display output back to client
socket_write($client, $output);
// Close the client (child) socket
socket_close($client);
// Close the master sockets
socket_close($sock);
?>
Подробнее о том, как кодировать сервер чата на основе сокетов, можно прочитать здесь: http://devzone.zend.com/article/1086