(PHP 4 >= 4.3.0, PHP 5)
socket_get_option — Holt die Socket-Optionen für einen Socket
socket_get_option() gibt den Wert der Option zurück, der im Parameter optname für den Socket socket gesetzt wurde.
Ein gültiger Socket-Deskriptor, der von der Funktion socket_create() oder socket_accept() erzeugt wurde.
Der Parameter level enthält die Protokollebene, für die die Option gilt. Beispiel: Um Optionen auf der Socketebene abzufragen würde level den Wert SQL_SOCKET enthalten. Andere Ebenen, etwa TCP, können abgefragt werden, indem man die Protokollnummer dieser Ebene angibt. Protokollnummern können mit einem Aufruf von getprotobyname() ermittelt werden.
Option | Beschreibung | Typ |
---|---|---|
SO_DEBUG | Gibt an, ob Debug-Informationen mitgeschrieben wurden. | int |
SO_BROADCAST | Gibt an, ob die Übermittlung von Rundsende-Nachrichten unterstützt wird. | int |
SO_REUSEADDR | Gibt an, ob die lokale Adresse wiederverwendet werden kann. | int |
SO_KEEPALIVE | Gibt an, ob Verbindungen durch periodische Aussendungen von Nachrichten aufrecht erhalten werden. Falls der verbundene Socket nicht auf diese Nachrichten antworten kann, wird die Verbindung unterbrochen und Prozesse, die auf diesen Socket schreiben, erhalten ein SIGPIPE-Signal. | int |
SO_LINGER |
Gibt an, ob der socket einen Aufruf von socket_close() verzögert, falls noch Daten vorhanden sind. In der Standardeinstellung versucht ein Socket vor dem Schließen, alle noch nicht gesendeten Daten zu übermitteln. Im Falle eines verbindungsorientierten Sockets, wartet socket_close() auf die Empfangsbestätigung seiner Gegenstelle. Falls l_onoff von 0 verschieden und l_linger ist 0, werden bei einem verbindungsorientierten Socket alle noch nicht gesendeten Daten verworfen und das Signal RST (Reset) an die Gegenstelle gesendet. Andererseits, falls sowohl l_onoff als auch l_linger von 0 verschieden sind, blockiert der Aufruf von socket_close() den Socket so lange, bis entweder alle Daten gesendet sind oder das Zeitlimit erreicht ist, das in l_linger gesetzt wurde. Wenn der Socket auf nicht-blockieren gesetzt ist, schlägt socket_close() fehl und gibt einen Fehler zurück. |
array. Das Array enthält zwei Schlüssel: l_onoff and l_linger. |
SO_OOBINLINE | Gibt an, ob socket die Übertragung von bandexternen Daten in der Reihenfolge überträgt, wie sie auftreten. | int |
SO_SNDBUF | Gibt die Größe des Sendepuffers zurück. | int |
SO_RCVBUF | Gibt die Größe des Empfangspuffers zurück. | int |
SO_ERROR | Gibt den Fehlerstatus zurück und löscht ihn. | int (dieser Wert kann nicht von socket_set_option() gesetzt werden.) |
SO_TYPE | Gibt den Typ von socket zurück (z. B. SOCK_STREAM). | int (dieser Wert kann nicht von socket_set_option() gesetzt werden.) |
SO_DONTROUTE | Gibt an, ob ausgehende Nachrichten das standardmässige Routing umgehen. | int |
SO_RCVLOWAT | Gibt die Mindestanzahl Bytes an, die socket bei einer Empfangsoperation verarbeiten soll. (Der Vorgabewert ist 1.) | int |
SO_RCVTIMEO | Gibt den Wert der Zeitspanne bis zu einer Zeitüberschreitung bei Empfangsoperationen an. | array. Das Array enthält zwei Schlüssel: sec, den Sekunden-Anteil der Zeitspanne und usec, den Mikrosekunden-Anteil der Zeitspanne bis zu einer Zeitüberschreitung. |
SO_SNDTIMEO | Gibt die Zeitspanne an, nach der eine Zeitüberschreitung bei Sendeoperationen ausgelöst wird. Eine Ausgabefunktion darf während der angegebenen Zeitspanne blockieren, falls die Ablaufsteuerung den Versand der Daten verhindert. | array. Das Array enthält zwei Schlüssel: sec den Sekunden-Anteil der Zeitspanne und usec den Mikrosekunden-Anteil der Zeitspanne bis zu einer Zeitüberschreitung. |
SO_SNDLOWAT | Gibt die Mindestanzahl Bytes an, die socket bei einer Ausgabeoperation verarbeiten soll. | int |
Gibt den Wert der angegebenen Option zurück oder FALSE, falls ein Fehler auftrat..
Beispiel #1 socket_set_option()-Beispiel
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>
Version | Beschreibung |
---|---|
4.3.0 | Der Name der Funktion wurde geändert. Sie ersetzt die bisherige Funktion socket_getopt(). |
If using Unix Sockets, and you want to use SO_PEERCRED, you can use the number 17 for the optname (and SOL_SOCKET for the level). The PID of the connecting process will be returned.
Just 2 notes here:
- On UNIX, If SO_DEBUG is set, the php program needs an effective user id of 0.
- activating SO_OOBINLINE on a socket is equivalent to passing MSG_OOB flag to each recieving functions used with that socket (eg: socket_recv, socket_recvfrom).