Heim Backend-Entwicklung PHP-Tutorial Grundkenntnisse von Socket in PHP

Grundkenntnisse von Socket in PHP

Jun 07, 2018 pm 03:27 PM
php socket

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.

2015811151417312.jpg (596×448)

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.

2015811151446490.jpg (542×476)

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.

2015811151507191.jpg (478×491)

Ü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:

  1. Läuft im Hintergrund

  2. Getrennt von dem Prozess, der es gestartet hat

  3. 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();
Nach dem Login kopieren

VorgangseffektStarten Sie den serverseitigen Socket-Prozess, um zu sehen, ob er im Hintergrund ausgeführt wird. Der Effekt ist wie folgt:

2015811151526030.png (985×174)

Der Clientzugriff kann über einen Browser oder Curl erfolgen. Hier wird Curl für den direkten Zugriff verwendet

2015811151634550.png (930×64)

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

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

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

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

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

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

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

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

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

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.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

See all articles