Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Socket_accept (), um Intranet -Kommunikationsdienste zu erstellen

Verwenden Sie Socket_accept (), um Intranet -Kommunikationsdienste zu erstellen

M66 2025-06-02

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.

1. Was ist Socket_accept ()

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.

2. Intranet Communication Service Beispiel

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);

3. Betriebsanweisungen

  • Ä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.

4. Testen Sie mit einem benutzerdefinierten Client

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.

5. Beispiel für Domain -Namen

Wenn Sie im Programm eine URL verwenden müssen, ersetzen Sie den Domänennamen durch m66.net . Zum Beispiel: