Сокеты Php и потоки

Я думаю, что php-сокеты и php-потоки перекрывают друг друга.
Мне удалось создать чат-клиент CLI PHP и сервер, используя либо сокеты, либо потоки.

Вот несколько иллюстрирующих строк кода:
Использование сокетов:

...
$main_socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Cannot create socket.\n");
@socket_bind($main_socket, $host, $port) or die("Could not bind to socket $host : $port.\n");
@socket_listen($main_socket, 5) or die("Could not set up socket listener\n");
...

Использование потоков:

...
$main_socket = @stream_socket_server ("tcp://$host:$port", $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN) or die("Cannot create socket.\n");
$clients = array($main_socket);
$clients_peername = array(array('port' => $port));

fputs(STDOUT, "Waiting for connections...\n");
...

Дело в том, что клиент и сервер могут быть созданы используя либо функции сокетов, либо функции потоков.

Я знаю, что Streams — это часть ядра PHP, а Sockets — его расширение.

Мой вопрос(ы):

  • В чем разница между сокетами и потоками применительно к программированию сокетов?
  • Существуют ли какие-либо возможности, связанные с программированием сокетов, которые у одного могут быть, а у другого нет?
22
задан Bojangles 18 March 2012 в 20:32
поделиться