Beim Programmiernetzwerk in PHP sind Socket -Operationen der grundlegende und wichtige Inhalt. Die Funktion Socket_Set_Block ist eine Funktion, die bei Betriebssockeln üblicherweise verwendet wird. Es wird verwendet, um den Blockierungsmodus der Sockel einzustellen. Dieser Artikel konzentriert sich auf die Rolle der Funktion Socket_Set_Block im Client -Verbindungsprozess und erläutert deren Verwendung durch einen tatsächlichen Beispielcode.
Mit der Funktion Socket_Set_Block wird der angegebene Socket auf den Blockierungsmodus festgelegt. Der sogenannte Blockierungsmodus bezieht sich darauf, wenn das Lesen und Schreiben von Vorgängen ausgeführt wird. Wenn die Daten vorübergehend nicht verfügbar sind, wartet die Funktion, bis die Daten verfügbar sind oder der Betrieb abgeschlossen ist.
Die Syntax ist wie folgt:
bool socket_set_block ( resource $socket )
$ Socket : Socket -Ressource, für die der Einstellungsmodus erforderlich ist.
Der Rückgabewert ist boolean und die Einstellung kehrt true zurück, wenn True erfolgreich ist, und der Fehler gibt falsch zurück, wenn sie falsch sind .
Relativ gibt es auch eine Funktion socket_set_nonblock , die den Socket in den Nicht-Blocking-Modus festlegt, und das Lesen und Schreiben von Vorgängen wird nicht auf sofortige Rückkehr warten.
Wenn ein Client über einen Socket eine Verbindung zum Server herstellt, muss er normalerweise darauf warten, dass die Verbindung erfolgreich hergestellt wird oder darauf warten, dass der Server Daten zurückgibt. Der Blockierungsmodus lässt den Socket -Aufruf des Kunden automatisch darauf warten, dass das Ergebnis wie ein normaler Funktionsaufruf zurückkehrt, der einfach und intuitiv zu programmieren ist.
Wenn Sie beispielsweise Socket_Connect aufrufen, blockiert die Funktion das aktuelle Programm, wenn die Verbindung erfolgreich oder fehlgeschlagen ist, was die Fehlerurteilung und den nachfolgenden Datenaustausch erleichtern kann.
In einigen Szenarien wird der Verbindungsprozess kompliziert, wenn der Blockierungsmodus nicht verwendet wird, und der Verbindungsstatus muss kontinuierlich mithilfe von Umfragen oder ereignisgesteuerten Mechanismen erkannt werden.
Hier ist ein einfaches Beispiel für PHP -Client, das zeigt, wie ein Socket auf Blockierungsmodus mithilfe der Funktion Socket_Set_Block eingestellt, eine Verbindung zum Server hergestellt und Daten gesendet werden.
<?php
// erstellenTCPSteckdosen
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("erstellenSteckdosen失败: " . socket_strerror(socket_last_error()));
}
// Einstellen auf den Blockierungsmodus,Stellen Sie sicher, dass die nachfolgenden Operationen abgeschlossen sein werden
if (!socket_set_block($socket)) {
die("Der Blockierungsmodus fehlte nicht ein");
}
// Stellen Sie eine Verbindung zum Server her,Für die Serveradressegitbox.netAnstelle des tatsächlichen Domain -Namens,Der Hafen ist80
$server = 'gitbox.net';
$port = 80;
if (!socket_connect($socket, $server, $port)) {
die("Stellen Sie eine Verbindung zum Server her失败: " . socket_strerror(socket_last_error($socket)));
}
// StrukturHTTPDaten anfordern
$request = "GET / HTTP/1.1\r\n";
$request .= "Host: $server\r\n";
$request .= "Connection: Close\r\n\r\n";
// Senden Sie eine Anfrage
socket_write($socket, $request, strlen($request));
// Lesen Sie die Antwort
$response = '';
while ($out = socket_read($socket, 2048)) {
$response .= $out;
}
// 关闭Steckdosen
socket_close($socket);
// Ausgabemitteilungsinhalt
echo $response;
?>