PHP Doku:: Hört einen Socket nach Verbindungsanforderungen ab - function.socket-listen.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSonstige DiensteSocketsSocket-Funktionensocket_listen

Ein Service von Reinhard Neidl - Webprogrammierung.

Socket-Funktionen

<<socket_last_error

socket_read>>

socket_listen

(PHP 4 >= 4.1.0, PHP 5)

socket_listenHört einen Socket nach Verbindungsanforderungen ab

Beschreibung

bool socket_listen ( resource $socket [, int $backlog = 0 ] )

Nachdem der Socket socket mit socket_create() erzeugt und mit socket_bind() mit einem Namen verknüpft wurde, wird er angewiesen, nach hereinkommenden Verbindungsanforderungen an dem Socket socket zu horchen.

socket_listen() kann nur zusammen mit Sockets vom Typ SOCK_STREAM oder SOCK_SEQPACKET verwendet werden.

Parameter-Liste

socket

Ein gültiger Socket-Deskriptor, der von socket_create() erzeugt wurde.

backlog

Maximal werden backlog hereinkommende Verbindungsanforderungen zur späteren Verarbeitung in die Warteschlange gestellt. Falls eine Verbindungsanforderung ankommt, wenn die Warteschlange voll ist, bekommt der Client eine Fehlermeldung mit dem Hinweis ECONNREFUSED. Oder, falls das zugrundeliegende Protokoll eine wiederholte Übertragung unterstützt, wird die Anforderung ignoriert, so dass weitere Verbindungsversuche möglicherweise erfolgreich sind.

Hinweis:

Die maximale Anzahl der im Parameter backlog angegebenen Einträge der Warteschlange hängt entscheidend vom darunterliegenden Betriebssystem ab. Auf Linux-Systemen wird die Zahl stillschweigend auf SOMAXCONN begrenzt. Wenn auf Win32-Systemen SOMAXCONN gesetzt ist, ist der Dienstanbieter verantwortlich für den Socket und muss die Warteschlange auf einen vernünftigen Maximalwert begrenzen. Es gibt für diese Systeme keine standardmäßige Möglichkeit, den aktuellen Wert herauszufinden.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben. Der Fehlercode kann mit der Funktion socket_last_error() abgefragt werden. Dieser Fehlercode kann an die Funktion socket_strerror() übergeben werden, um eine textuelle Beschreibung des Fehlers zu erhalten.

Siehe auch


2 BenutzerBeiträge:
- Beiträge aktualisieren...
Karuna Govind (karuna.kgx gmail)
16.07.2008 1:10
To change the maximum allowed backlog by your system (*nix machines only), first you need to find the variable for this limit:

sudo sysctl -a | grep somaxconn

On ubuntu boxes, it returns net.core.somaxconn (you need to look for the 'somaxconn' variable, the full name will vary across different systems).

Update this to a large number as follows:

sudo sysctl -w net.core.somaxconn=1024

This will work straight away. no restart required.
lewislp at yahoo dot com
30.08.2005 21:13
socket_listen() cannot be used for UDP communications as discussed below.

In addition, the example below discusses UDP connections, which only exist if the application manages them through a state table (the OS does not create a UDP connection upon receiving a datagram).  Having a function named socket_connect() that determines the remote IP and port only confuses the matter by giving the indication of some sort of connection handshake between two hosts.  Rather, socket_connect() only specifies the remote IP and port used by subsequent socket_send() calls.  You can achieve the same effect by skipping socket_connect() altogether and specifying the remote IP and port in socket_sendto() calls.

If you find yourself writing a connection-based protocol on top of UDP, consider using TCP.  If your application requires streaming data of some sort, use TCP to manage connections and control messages, and UDP to handle the streaming data (H.323 is an example of a suite of TCP and UDP protocols working in conjunction).



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)