PHP 5.4.33 Released

socket_create_listen

(PHP 4 >= 4.1.0, PHP 5)

socket_create_listenOuvre un socket sur un port pour accepter les connexions

Description

resource socket_create_listen ( int $port [, int $backlog = 128 ] )

socket_create_listen() crée une nouvelle ressource de socket, de type AF_INET, mis en attente sur toutes les interfaces locales, pour le port port.

socket_create_listen() sert à simplifier la création de nouveaux sockets destinés à être mis en attente, et accepter de nouvelles connexions.

Liste de paramètres

port

Le port que l'on doit écouter sur toutes les interfaces.

backlog

Le paramètre backlog définit la taille maximum de la queue de connexions en attente. SOMAXCONN peut être utilisée comme valeur pour le paramètre backlog. Reportez-vous à socket_listen() pour plus de détails.

Valeurs de retour

socket_create_listen() retourne une nouvelle ressource de socket en cas de succès et FALSE en cas d'erreur. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur humainement lisible.

Notes

Note:

Si vous voulez créer un socket qui n'écoute que certaines interfaces, vous devez utiliser socket_create(), socket_bind() et socket_listen().

Voir aussi

add a note add a note

User Contributed Notes 4 notes

up
2
basim at baassiri dot com
10 years ago
Remember that ports are only valid from 1 - 65536
up
2
jdittmer at ppp0 dot net
10 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
1
sysspoof at ng-lab dot org
6 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
-1
aeolianmeson at ifacfchi dot blitzeclipse dot com
6 years ago
I believe that on some systems this may not bind to some or all public interfaces.

On my Windows system, I could not connect on the public interface using this, but could when I made the individual calls to create, bind, and listen.

Dustin Oprea
To Top