socket_get_option
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Liefert die Socket-Optionen für einen Socket
Beschreibung
   socket_get_option() gibt den Wert der Option zurück, die
   im Parameter option für den Socket
   socket angegeben wurde.
  
Parameter-Liste
- 
socket
- 
      Eine Socket-Instanz, die mit der Funktion socket_create() oder socket_accept() erzeugt wurde. 
- 
level
- 
      Der Parameter levelenthält die Protokollebene, für die die Option gilt. Beispiel: Um Optionen auf der Socketebene abzufragen, würdelevelden WertSOL_SOCKETenthalten. Andere Ebenen, etwaTCP, können abgefragt werden, indem man die Protokollnummer dieser Ebene angibt. Protokollnummern können mit einem Aufruf von getprotobyname() ermittelt werden.
- 
option
- 
      Mögliche Socket-Optionen Option Beschreibung Typ SO_DEBUGGibt an, ob Debug-Informationen mitgeschrieben werden. int SO_BROADCASTGibt an, ob die Übermittlung von Rundsende-Nachrichten unterstützt wird. int SO_REUSEADDRGibt an, ob lokale Adressen wiederverwendet werden können. int SO_REUSEPORTGibt an, ob lokale Ports wiederverwendet werden können. int SO_KEEPALIVEGibt an, ob Verbindungen durch periodische Aussendungen von Nachrichten aufrecht erhalten werden. Falls der verbundene Socket nicht auf diese Nachrichten antwortet, wird die Verbindung unterbrochen und Prozesse, die auf diesen Socket schreiben, erhalten ein SIGPIPE-Signal. int SO_LINGERGibt an, ob der socketeinen 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 gleich 0 ist, werden alle noch nicht gesendeten Daten verworfen und im Fall eines verbindungsorientierten Sockets 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 und l_linger. SO_OOBINLINEGibt an, ob socketdie Übertragung von bandexternen Daten in der Reihenfolge überträgt, wie sie auftreten.int SO_SNDBUFGibt die Größe des Sendepuffers zurück. int SO_RCVBUFGibt die Größe des Empfangspuffers zurück. int SO_ERRORGibt den Fehlerstatus zurück und löscht ihn. int (dieser Wert kann nicht von socket_set_option() gesetzt werden.) SO_TYPEGibt den Typ von socketzurück (z. B.SOCK_STREAM).int (dieser Wert kann nicht von socket_set_option() gesetzt werden.) SO_DONTROUTEGibt an, ob ausgehende Nachrichten das standardmäßige Routing umgehen. int SO_RCVLOWATGibt die Mindestanzahl Bytes an, die socketbei einer Empfangsoperation verarbeiten soll.int SO_RCVTIMEOGibt bei Empfangsoperationen den Wert der Zeitspanne bis zu einer Zeitüberschreitung an. array. Das Array enthält zwei Schlüssel: sec ist der Sekunden-Anteil der Zeitspanne und usec der Mikrosekunden-Anteil der Zeitspanne bis zu einer Zeitüberschreitung. SO_SNDTIMEOGibt die Zeitspanne an, nach der bei Sendeoperationen eine Zeitüberschreitung 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 ist der Sekunden-Anteil der Zeitspanne und usec der Mikrosekunden-Anteil der Zeitspanne bis zu einer Zeitüberschreitung. SO_SNDLOWATGibt die Mindestanzahl Bytes an, die socketbei einer Ausgabeoperation verarbeiten soll.int TCP_NODELAYGibt an, ob der Nagle-TCP-Algorithmus deaktiviert ist. int MCAST_JOIN_GROUPTritt einer Multicast-Gruppe bei. array mit den Schlüsseln "group", der eine IPv4 oder IPv6 Multicast-Adresse als String angibt, und"interface", der entweder eine Schnittstellennummer als Int oder einen Schnittstellennamen alsString, wie etwa"eth0", angibt.0kann angegeben werden, um festzulegen, dass die Schnittstelle unter Verwendung von Routing-Regeln gewählt werden soll. (Dies kann nur für socket_set_option() verwendet werden.)MCAST_LEAVE_GROUPVerläßt eine Multicast-Gruppe. array. Siehe MCAST_JOIN_GROUPfür weitere Information. (Dies kann nur für socket_set_option() verwendet werden.)MCAST_BLOCK_SOURCEBlockiert Pakete, die von einer bestimmten Quelle an eine bestimmte Multicast-Gruppe, der man zuvor beigetreten ist, gesendet wurden. array mit denselben Schlüsseln wie MCAST_JOIN_GROUP, plus einem zusätzlichen Schlüssel,source, der die IPv4- oder IPv6-Adresse der zu blockierenden Quelle als String angibt. (Dies kann nur für socket_set_option() verwendet werden.)MCAST_UNBLOCK_SOURCEUnblockiert Pakete, die von einer bestimmten Quelle an eine bestimmte Multicast-Gruppe, der man zuvor beigetreten ist, gesendet wurden; d. h. entsprechende Pakete werden wieder empfangen. array mit demselben Format wie MCAST_BLOCK_SOURCE. (Dies kann nur für socket_set_option() verwendet werden.)MCAST_JOIN_SOURCE_GROUPEmpfange Pakete, die an eine bestimmte Multicast-Gruppe gesendet wurden, deren Quelladresse mit einem bestimmten Wert übereinstimmt. array mit demselben Format wie MCAST_BLOCK_SOURCE. (Dies kann nur für socket_set_option() verwendet werden.)MCAST_LEAVE_SOURCE_GROUPBeende den Empfang von Paketen, die an eine bestimmte Multicast-Gruppe gesendet wurden, deren Quelladresse mit einem bestimmten Wert übereinstimmt. array mit demselben Format wie MCAST_BLOCK_SOURCE. (Dies kann nur für socket_set_option() verwendet werden.)IP_MULTICAST_IFDie ausgehende Schnittstelle für IPv4 Multicast-Pakete. Entweder int, um die Schnittstellennummer anzugeben, oder ein String mit dem Schnittstellennamen, wie eth0. Der Wert 0 kann verwendet werden, um festzulegen, dass die Routingtabelle für die Schnittstellenauswahl genutzt werden soll. Die Funktion socket_get_option() gibt einen Schnittstellenindex zurück. Es ist zu beachten, dass im Gegensatz zur C-API, diese Option KEINE IP-Adresse akzeptiert. Das beseitigt den Schnittstellenunterschied zwischenIP_MULTICAST_IFundIPV6_MULTICAST_IF.IPV6_MULTICAST_IFDie ausgehende Schnittstelle für IPv6-Multicast-Pakete. Identisch zu IP_MULTICAST_IF.IP_MULTICAST_LOOPDie Multicast-Loopback-Richtlinie für IPv4-Pakete, die festlegt, ob von diesem Socket versendete Multicast-Pakete auch die Empfänger auf demselben Host erreichen sollen, die der Multicast-Gruppe auf der von diesem Socket verwendeten ausgehenden Schnittstelle beigetreten sind. Dies ist die Voreinstellung. int (entweder 0oder1). Für socket_set_option() wird jeder Wert akzeptiert und gemäß den übelichen PHP-Regeln in booleschen Wert konvertiert.IPV6_MULTICAST_LOOPAnalog zu IP_MULTICAST_LOOP, aber für IPv6.int. Siehe IP_MULTICAST_LOOP.IP_MULTICAST_TTLDie Lebensdauer ausgehender IPv4-Multicast-Pakete. Dies sollte ein Wert zwischen 0 (verlasse nicht die Schnittstelle) und 255 sein. Der Vorgabewert ist 1 (nur das lokale Netzwerk wird erreicht). int zwischen 0 und 255. IPV6_MULTICAST_HOPSAnalog zu IP_MULTICAST_TTL, aber für IPv6- Pakete. Der Wert -1 wird ebenfalls akzeptiert und bedeutet, dass die Vorgabewert der Route verwendet werden soll.int zwischen -1 und 255. SO_MARKBestimmt unter Linux eine Kennung für die Paketfilterung auf dem Socket. int SO_ACCEPTFILTERFügt einen Accept-Filter auf dem überwachten Socket hinzu (FreeBSD/NetBSD). Unter FreeBSD muss vorher ein Kernelmodul für den Accept-Filter geladen werden (z. B. accf_http). Ein String mit dem Namen des Filters (maximale Länge: 15). SO_USER_COOKIEBestimmt unter FreeBSD eine Kennung für die Paketfilterung auf dem Socket. int SO_DONTTRUNCUngelesene Daten aufbewahren. int SO_WANTMOREEinen Hinweis ausgeben, wenn weitere Daten verfügbar sind. int TCP_DEFER_ACCEPTBenachrichtigt einen überwachenden Socket erst, wenn die Daten vollständig sind. int 
Rückgabewerte
   Gibt den Wert der angegebenen Option zurück. Bei einem Fehler wird false zurückgegeben.
  
Changelog
| Version | Beschreibung | 
|---|---|
| 8.0.0 | socketist nun eine
   Socket-Instanz; vorher war es eine
   resource. | 
Beispiele
Beispiel #1 socket_get_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));
?>
Siehe auch
- socket_create_listen() - Öffnet einen Socket, um Verbindungen über einem gegebenen Port aufzubauen
- socket_set_option() - Setzt die Optionen für einen Socket
 
                     
                     
                     
                     
                    
 
          