Grundkenntnisse von Socket in PHP
Dieser Artikel stellt hauptsächlich die Grundkenntnisse von Socket in PHP vor. Ich hoffe, dass er für alle hilfreich ist.
Was sind TCP/IP und UDP?
TCP/IP (Transmission Control Protocol/Internet Protocol) ist ein industrieller Standardprotokollsatz, der für Weitverkehrsnetze (WANs) entwickelt wurde.
UDP (User Data Protocol, User Datagram Protocol) ist ein Protokoll, das TCP entspricht. Es ist Mitglied der TCP/IP-Protokollsuite.
Hier ist ein Diagramm, das die Beziehung zwischen diesen Protokollen zeigt.
Die TCP/IP-Protokollsuite umfasst die Transportschicht, die Netzwerkschicht und die Verbindungsschicht. Jetzt kennen Sie die Beziehung zwischen TCP/IP und UDP.
Wo ist die Steckdose? In Abbildung 1 sehen wir den Schatten von Socket nicht. Wo ist er also? Lassen Sie uns Bilder verwenden, um klar zu sprechen.
Es stellt sich heraus, dass der Sockel hier ist.
Was ist Socket? Socket ist eine zwischengeschaltete Software-Abstraktionsschicht für die Kommunikation zwischen der Anwendungsschicht und der TCP/IP-Protokollsuite. Es handelt sich um eine Reihe von Schnittstellen. Im Entwurfsmodus ist Socket eigentlich ein Fassadenmodus, der die komplexe TCP/IP-Protokollfamilie hinter der Socket-Schnittstelle verbirgt. Für Benutzer ist alles eine Reihe einfacher Schnittstellen, die es Socket ermöglichen, Daten so zu organisieren, dass sie dem angegebenen Protokoll entsprechen.
Können Sie sie verwenden? Frühere Generationen haben viel für uns getan und die Kommunikation zwischen Netzwerken ist viel einfacher geworden, aber es gibt immer noch viel zu tun. Als ich zuvor von Socket-Programmierung hörte, dachte ich, es handele sich um relativ fortgeschrittene Programmierkenntnisse, aber solange wir das Funktionsprinzip der Socket-Programmierung verstehen, wird das Rätsel gelöst sein.
Eine Szene aus dem Leben. Wenn Sie einen Freund anrufen möchten, wählen Sie zuerst die Nummer. Nachdem der Freund den Klingelton hört, nimmt er den Hörer ab. Zu diesem Zeitpunkt sind Sie und Ihr Freund verbunden und Sie können sprechen. Wenn die Kommunikation beendet ist, legen Sie den Hörer auf, um das Gespräch zu beenden. Szenen aus dem Leben erklären, wie das funktioniert. Vielleicht wurde die TCP/IP-Protokollfamilie im Leben geboren, aber das ist nicht unbedingt der Fall.
Überblick über die Socket-Programmierung in PHP php5.3 verfügt über ein Socket-Modul, das PHP über Socket-Kommunikationsfunktionen verfügt, bitte für bestimmte APIs Weitere Informationen finden Sie im offiziellen Handbuch: http://php.net/manual/zh/function.socket-create.php. Die spezifische Implementierung ist c sehr ähnlich, außer dass die zugrunde liegenden Operationen der Speicherzuweisung und des Netzwerks fehlen Konvertierung der Bytereihenfolge
Gleichzeitig können das pcntl-Modul von PHP und das Posix-Modul grundlegende Prozessmanagement-, Signalverarbeitungs- und andere Funktionen auf Betriebssystemebene realisieren. Hier gibt es zwei sehr wichtige Funktionen, pcntl_fork() und posix_setsid(). Das Forken () eines Prozesses bedeutet, dass eine Kopie des laufenden Prozesses erstellt wird. Die Kopie wird als untergeordneter Prozess betrachtet, und der ursprüngliche Prozess wird als übergeordneter Prozess betrachtet. Nachdem fork() ausgeführt wurde, kann es vom Prozess und der Terminalsteuerung, die es gestartet hat, getrennt werden, was auch bedeutet, dass der übergeordnete Prozess frei beendet werden kann. Der Rückgabewert von pcntl_fork() bedeutet, dass -1 einen Ausführungsfehler anzeigt, 0 einen Ausführungsfehler im untergeordneten Prozess anzeigt und größer als 0 einen Ausführungsfehler im übergeordneten Prozess anzeigt. setztit(), was den neuen Prozess zunächst zum „Leiter“ einer neuen Sitzung macht und schließlich dafür sorgt, dass der Prozess das Terminal nicht mehr kontrolliert. Dies ist auch der kritischste Schritt auf dem Weg zu einem Daemon-Prozess, was bedeutet, dass der Prozess nicht zum Beenden gezwungen wird, wenn das Terminal geschlossen wird. Dies ist ein kritischer Schritt für einen residenten Prozess, der nicht unterbrochen werden kann. Führen Sie den letzten fork() aus. Dieser Schritt ist nicht notwendig, wird aber normalerweise durchgeführt. Seine größte Bedeutung besteht darin, zu verhindern, dass das Steuerterminal abgerufen wird.
Was ist ein Daemon-Prozess? Ein Daemon wird normalerweise als Hintergrundaufgabe betrachtet, die das Terminal nicht steuert. Es weist drei offensichtliche Merkmale auf:
Läuft im Hintergrund
Getrennt von dem Prozess, der es gestartet hat
-
Keine Terminalsteuerung erforderlich
Die häufigste Implementierungsmethode: fork() -> setsid() -> implementiert den Daemon-Prozess.
Serverseitiger Socket-Überwachungscode
<?php // 接受客户端请求,回复固定的响应内容 function server_listen_socket ($address, $port) { $buffer = "Msg from wangzhengyi server, so kubi..."; $len = strlen($buffer); // create, bind and listen to socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (! $socket) { echo "failed to create socket:" . socket_strerror($socket) . "\n"; exit(); } $bind_flag = socket_bind($socket, $address, $port); if (! $bind_flag) { echo "failed to bind socket:" . socket_strerror($bind_flag) . "\n"; exit(); } $backlog = 20; $listen_flag = socket_listen($socket, $backlog); if (! $listen_flag) { echo "failed to listen to socket:" . socket_strerror($listen_flag) . "\n"; exit(); } echo "waiting for clients to connect\n"; while (1) { if (($accept_socket = socket_accept($socket)) == FALSE) { continue; } else { socket_write($accept_socket, $buffer, $len); socket_close($accept_socket); } } } function run_server () { $pid1 = pcntl_fork(); if ($pid1 == 0) { // first child process // 守护进程的一般流程:fork()->setsid()->fork() posix_setsid(); if (($pid2 = pcntl_fork()) == 0) { $address = "192.168.1.71"; $port = "8767"; server_listen_socket($address, $port); } else { // 防止获得控制终端 exit(); } } else { // wait for first child process exit pcntl_wait($status); } } // server守护进程 run_server();
VorgangseffektStarten Sie den serverseitigen Socket-Prozess, um zu sehen, ob er im Hintergrund ausgeführt wird. Der Effekt ist wie folgt:
Der Clientzugriff kann über einen Browser oder Curl erfolgen. Hier wird Curl für den direkten Zugriff verwendet
Zusammenfassung:Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
So verwenden Sie magische PHP-Funktionen und magische Konstanten
So verwenden Sie die magischen PHP-Methoden __call und __callStatic
PHP How um große CSV-Dateien zu lesen und in die Datenbank zu importieren
Das obige ist der detaillierte Inhalt vonGrundkenntnisse von Socket in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet
