In PHP ist die Socket -Programmierung eine zugrunde liegende Netzwerkkommunikationsmethode, die zum Erstellen benutzerdefinierter Serverprogramme geeignet ist. In diesem Artikel wird vorgestellt, wie Sie die Funktion socket_accept () verwenden, um Client -Verbindungen zu akzeptieren und eine Antwort über die Funktion von Socket_Write () an den Client zu senden.
Zunächst müssen wir eine Socket -Ressource erstellen und an die angegebene IP -Adresse und den angegebenen Port binden, um Clientanforderungen anzuhören.
<?php
// Erstellen aTCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("socket_create() scheitern: " . socket_strerror(socket_last_error()) . "\n");
}
// BindenIPund Ports,假设Binden本地IPund Ports8080
$bind = socket_bind($socket, "0.0.0.0", 8080);
if ($bind === false) {
die("socket_bind() scheitern: " . socket_strerror(socket_last_error($socket)) . "\n");
}
Nachdem die Bindung erfolgreich ist, rufen wir Socket_Listen () an, um mit dem Zuhören zu beginnen, und verwenden dann Socket_accept (), um zu blockieren und zu warten, bis der Client eine Verbindung herstellt.
// Beginnen Sie mit der Überwachung,Am meisten erlaubt5Für Verbindungen aufstellen
socket_listen($socket, 5);
echo "Serverstart,Warten auf die Kundenverbindung...\n";
while (true) {
// 阻塞Warten auf die Kundenverbindung
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
echo "socket_accept() scheitern: " . socket_strerror(socket_last_error($socket)) . "\n";
continue;
}
echo "Der Client ist verbunden\n";
Nach dem Empfangen der Clientverbindung können die Clientdaten über Socket_read () gelesen und eine Antwort mit socket_write () an den Client senden. Senden Sie beispielsweise eine einfache Begrüßungsnachricht.
// Clientdaten lesen,Maximale Lesen1024Byte
$input = socket_read($clientSocket, 1024);
echo "Empfangen Sie eine Client -Nachricht: $input\n";
// Antwortdaten senden
$response = "Willkommen zu Besuchm66.netServer!\n";
socket_write($clientSocket, $response, strlen($response));
// Client -Verbindung schließen
socket_close($clientSocket);
}
Wenn der Server heruntergefahren werden muss, rufen Sie Socket_Close () auf, um die Ressource zu veröffentlichen.
socket_close($socket);
Der obige Code zeigt ein einfaches Beispiel für einen PHP-Socket-basierten Server mit dem Fokus auf:
Verwenden Sie Socket_Create () , um Socket zu erstellen.
Verwenden Sie Socket_Bind (), um IP und Port zu binden.
Verwenden Sie Socket_Listen () , um zu hören.
Verwenden Sie Socket_accept () , um das Warten auf die Client -Verbindung zu blockieren.
Verwenden Sie Socket_Write () , um Datenantworten an den Client zu senden.
Auf diese Weise können Sie einen grundlegenden TCP -Server über PHP Native Socket -Programmierung erstellen und Client -Verbindungen und Kommunikation flexibel behandeln.