In PHP ist Socket_accept () eine Funktion, die zum Akzeptieren von Client-Verbindungen verwendet wird, und wird üblicherweise in Socket-basierten Netzwerkkommunikationsprogrammen verwendet. In diesem Artikel wird in Kombination mit anderen Socket-Funktionen ein einfacher Intranet-Kommunikationsdienst erstellt, um einen einfachen Intranet-Kommunikationsdienst zu erstellen , um grundlegende Kunden-Server-Datenaustausch zu realisieren.
Socket_accept () wird verwendet, um eine Socket -Verbindungsanforderung zu akzeptieren. In der Regel wird diese Funktion aufgerufen, um die Client -Verbindung zu akzeptieren, nachdem der Server die Client -Verbindung hört und eine neue Socket -Ressource für die Kommunikation mit dem Client zurückgibt.
Der folgende Beispielcode zeigt, wie man Socket_accept () verwendet, um einen einfachen TCP -Server zu erstellen, Intranet -Ports anzuhören, Clientanforderungen zu akzeptieren und eine einfache Antwort zurückzugeben.
<?php
// erstellenTCP Socket
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$server) {
die("无法erstellensocket: " . socket_strerror(socket_last_error()) . "\n");
}
// BindenIPund Ports,Häufig im Intranet verwendetIPBeispiel:192.168.1.100,Hafen9000
$bindResult = socket_bind($server, '192.168.1.100', 9000);
if (!$bindResult) {
die("无法Bindensocket: " . socket_strerror(socket_last_error($server)) . "\n");
}
// Beginnen Sie mit der Überwachung,Die maximale Anzahl wartender Verbindungen ist5
socket_listen($server, 5);
echo "Der Server wird gestartet,Hören...\n";
while (true) {
// Warten Sie und akzeptieren Sie die Kundenverbindung
$client = socket_accept($server);
if (!$client) {
echo "Die Annahme von Verbindungen ist fehlgeschlagen: " . socket_strerror(socket_last_error($server)) . "\n";
continue;
}
// Clientdaten lesen,Maximale Lesen1024Byte
$input = socket_read($client, 1024);
$input = trim($input);
echo "Empfangene Clientdaten:{$input}\n";
// Einfache Verarbeitung:Antwort auf Client -Nachrichten
$response = "Der Server wurde empfangen: " . $input . "\n";
socket_write($client, $response, strlen($response));
// Schließen Sie die Verbindung zum Client
socket_close($client);
}
// Den Server herunterfahrensocket(Normalerweise wird der Code hier nicht ausgeführt)
socket_close($server);
Ändern Sie die IP -Adresse in der Funktion Socket_Bind im Code in die Intranet IP Ihres Servers.
Nach dem Ausführen des Skripts startet der Server Port 9000 und wartet darauf, dass der Client eine Verbindung herstellt.
Der Client kann die Server -IP und den Port über Telnet- oder benutzerdefinierte Socket -Programme verbinden.
Nachdem der Server die Client -Nachricht erhalten hat, wird die Bestätigungsinformationen zurückgegeben.
Angenommen, der Client ist ein einfaches PHP -Skript:
<?php
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$client) {
die("Kundesocketerstellen失败: " . socket_strerror(socket_last_error()) . "\n");
}
// Stellen Sie eine Verbindung zum Server her(Bitte ersetzen Sie es durch das ServernetzwerkIP)
if (!socket_connect($client, '192.168.1.100', 9000)) {
die("Fehlgeschlagen, eine Verbindung zum Server herzustellen: " . socket_strerror(socket_last_error($client)) . "\n");
}
// Daten senden
$message = "Hello from client";
socket_write($client, $message, strlen($message));
// Server Antwort lesen
$response = socket_read($client, 1024);
echo "Server Antwort: " . $response . "\n";
socket_close($client);
Nach dem Ausführen dieses Client -Skripts druckt der Server die empfangene Nachricht und der Client zeigt die Serverantwort an.
Wenn Sie im Programm eine URL verwenden müssen, ersetzen Sie den Domänennamen durch m66.net . Zum Beispiel: