socket_create_listen
(PHP 4 >= 4.1.0, PHP 5)
socket_create_listen — Открывает сокет на указанном порту для принятия соединений
Описание
$port
[, int $backlog
= 128
] )
socket_create_listen() создаёт новый ресурс сокета
типа AF_INET
, слушающий на всех
локальных интерфейсах указанный порт в ожидании новых соединений.
Эта функция предназначена для упрощения задачи создания нового сокета, который только слушает порт для получения новых соединений.
Список параметров
-
port
-
Порт, который нужно слушать на всех интерфейсах.
-
backlog
-
Параметр
backlog
определяет максимальную длину, до которой может вырасти очередь ожидающих соединений.SOMAXCONN
может быть передан как параметрbacklog
, смотрите socket_listen() для более полной информации.
Возвращаемые значения
socket_create_listen() возвращает новый ресурс сокета
в случае успешного завершения или FALSE
в случае ошибки. Код ошибки может быть получен
при помощи функции socket_last_error(). Этот код может быть передан
функции socket_strerror() для получения текстового описания
ошибки.
Примечания
Замечание:
Если вы хотите создать сокет, который будет прослушивать только определённый интерфейс, вам нужно использовать функции socket_create(), socket_bind() и socket_listen().
Смотрите также
- socket_create() - Create a socket (endpoint for communication)
- socket_create_pair() - Создаёт пару неразличимых сокетов и сохраняет их в массиве
- socket_bind() - Привязывает имя к сокету
- socket_listen() - Listens for a connection on a socket
- socket_last_error() - Возвращает последнюю ошибку на сокете
- socket_strerror() - Возвращает строку, описывающую ошибку сокета
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_cmsg_space
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_get_option
- socket_getopt
- socket_getpeername
- socket_getsockname
- socket_import_stream
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_recvfrom
- socket_recvmsg
- socket_select
- socket_send
- socket_sendmsg
- socket_sendto
- socket_set_block
- socket_set_nonblock
- socket_set_option
- socket_setopt
- socket_shutdown
- socket_strerror
- socket_write
Коментарии
Remember that ports are only valid from 1 - 65535
[editor's note: typo fixed, thanks abryant at apple dot com]
If you specify no port number, or 0, a random free port will be chosen.
To use ports for ipc between client/server on the same machine you can use (minus error checking)
server.php:
<?php
$sock = socket_create_listen(0);
socket_getsockname($sock, $addr, $port);
print "Server Listening on $addr:$port\n";
$fp = fopen($port_file, 'w');
fwrite($fp, $port);
fclose($fp);
while($c = socket_accept($sock)) {
/* do something useful */
socket_getpeername($c, $raddr, $rport);
print "Received Connection from $raddr:$rport\n";
}
socket_close($sock);
?>
client.php:
<?php
$fp = fopen($port_file, 'r');
$port = fgets($fp, 1024);
fclose($fp);
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, '127.0.0.1', $port);
socket_close($sock);
?>
Please note that port 1 to and with 1024 on linux and bsd system require root privileges. So it is recommended to choose a higher port for your own application.