PHP 8.5.0 Alpha 1 available for testing

socket_create_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_create_listenAbre un socket en un puerto para aceptar conexiones

Descripción

socket_create_listen(int $port, int $backlog = SOMAXCONN): Socket|false

socket_create_listen() crea una nueva instancia de Socket, de tipo AF_INET, en espera en todas las interfaces locales, para el puerto port.

socket_create_listen() sirve para simplificar la creación de nuevos sockets destinados a estar en espera, y aceptar nuevas conexiones.

Parámetros

port

El puerto que debe ser escuchado en todas las interfaces.

backlog

El parámetro backlog define el tamaño máximo de la cola de conexiones en espera. SOMAXCONN puede ser utilizada como valor para el parámetro backlog. Consulte socket_listen() para más detalles.

Valores devueltos

socket_create_listen() devuelve una nueva instancia de Socket en caso de éxito y false en caso de error. El código de error generado puede ser obtenido llamando a la función socket_last_error(). Este código de error puede ser pasado a la función socket_strerror() para obtener un mensaje de error legible por humanos.

Historial de cambios

Versión Descripción
8.4.0 El valor por omisión es ahora SOMAXCONN. Anteriormente, era 128.
8.0.0 En caso de éxito, esta función devuelve ahora una instancia de Socket; anteriormente, se devolvía un resource.

Notas

Nota:

Si se desea crear un socket que solo escuche ciertas interfaces, debe utilizarse socket_create(), socket_bind() y socket_listen().

Ver también

add a note

User Contributed Notes 3 notes

up
10
jdittmer at ppp0 dot net
20 years ago
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);
?>
up
4
sysspoof at ng-lab dot org
17 years ago
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.
up
2
basim at baassiri dot com
21 years ago
Remember that ports are only valid from 1 - 65535

[editor's note: typo fixed, thanks abryant at apple dot com]
To Top