


Eine kurze Einführung in das Socket-Kommunikationsprinzip von PHP
für TCP/IP, UDP, Socket Du kennst das Wort Programmieren nicht, oder? Mit der Entwicklung der Netzwerktechnologie dringen diese Worte in unsere Ohren. Ich möchte also fragen:
1. Was ist TCP/IP, UDP?
2. Wo ist Steckdose?
3. SteckdoseWas ist das?
4. Werden Sie sie verwenden?
Was ist TCP/IP, UDP?
TCP/IP(Transmission Control Protocol/Internet Protocol) Das Transmission Control Protocol/Internet Protocol ist ein Industriestandard-Protokollsatz, der für Weitverkehrsnetze (WANs) entwickelt wurde.
UDP (User Data Protocol, User Datagram Protocol) ist das Protokoll, das TCP entspricht. Es ist ein Mitglied der TCP/IP-Protokollfamilie.
Hier ist ein Diagramm, das die Beziehung zwischen diesen Protokollen zeigt.
Die TCP/IP-Protokollsuite umfasst Transportschicht und Netzwerk Schicht, 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 wir Bilder für sich 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. Wenn 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.
Beginnen wir mit der Serverseite. Der Server initialisiert zuerst den Socket, bindet dann an den Port, lauscht auf den Port, ruft „Accept“ zum „Blockieren“ auf und wartet darauf, dass der Client eine Verbindung herstellt. Wenn zu diesem Zeitpunkt ein Client einen Socket initialisiert und dann eine Verbindung zum Server herstellt und die Verbindung erfolgreich ist, wird die Verbindung zwischen dem Client und dem Server hergestellt. Der Client sendet eine Datenanforderung, der Server empfängt die Anforderung und verarbeitet sie, sendet dann die Antwortdaten an den Client, der Client liest die Daten und schließt schließlich die Verbindung und die Interaktion endet.
Sockelbezogene Funktionen:
------------------------------------- --- ------------------ --- -------
socket_accept() akzeptiert eine Socket-Verbindung
socket_bind() bindet den Socket an eine IP-Adresse und einen Port
socket_clear_error() löscht den Socket-Fehler oder den letzten Fehlercode
socket_close() Schließt eine Socket-Ressource
socket_connect() Startet eine Socket-Verbindung
socket_create_listen() Öffnet einen Socket, der den angegebenen Port überwacht
socket_create_pair() Erzeugt ein Paar nicht unterscheidbarer Sockets in einem Array
socket_create() generiert einen Socket, was dem Generieren einer Socket-Datenstruktur entspricht
socket_get_option() ruft die Socket-Optionen ab
socket_getpeername() ruft die IP-Adresse eines entfernten ähnlichen Hosts ab
socket_getsockname() ruft die ab IP der lokalen Socket-Adresse
socket_iovec_add() Fügt einem Scatter-/Aggregate-Array einen neuen Vektor hinzu
socket_iovec_alloc() Diese Funktion erstellt eine iovec-Datenstruktur, die senden, empfangen, lesen und schreiben kann
socket_iovec_delete() Löschen Sie einen bereits zugewiesenen Iovec.
Socket_iovec_fetch() gibt die Daten der angegebenen Iovec-Ressource zurück.
Socket_iovec_free() gibt eine Iovec-Ressource frei.
Socket_iovec_set() legt den neuen Wert der Iovec-Daten fest letzter Fehlercode des aktuellen Sockets
socket_listen() hört auf alle Verbindungen vom angegebenen Socket
socket_read() liest Daten der angegebenen Länge
socket_readv() liest Daten aus dem Scatter/Aggregate-Array
socket_recv() beendet die Daten vom Socket zum Zwischenspeichern
socket_recvfrom() Akzeptiert Daten vom angegebenen Socket. Wenn nicht angegeben, wird der aktuelle Socket als Standard verwendet
socket_recvmsg() Nachrichten von iovec empfangen
socket_select() Mehrfachauswahl
socket_send() Diese Funktion sendet Daten an den angeschlossenen Socket
socket_sendmsg() sendet eine Nachricht an den Socket
socket_sendto() sendet eine Nachricht an den Socket an der angegebenen Adresse
socket_set_block() Den Socket auf Blockmodus setzen
socket_set_nonblock() socket Auf Nichtblockmodus setzen
socket_set_option() Socket-Optionen festlegen
socket_shutdown() Mit dieser Funktion können Sie das Lesen, Schreiben oder den angegebenen Socket schließen
socket_strerror() Gibt den detaillierten Fehler der angegebenen Fehlernummer zurück
socket_write() schreibt Daten in den Socket-Cache
socket_writev() schreibt Daten in das Scatter/Aggregate-Array
Fall 1: Demonstration der Socket-Kommunikation
Serverseite:
<span><?php //确保在连接客户端时不会超时 set_time_limit(0); $ip = '127.0.0.1'; $port = 1935; /* +------------------------------- * @socket通信整个过程 +------------------------------- * @socket_create * @socket_bind * @socket_listen * @socket_accept * @socket_read * @socket_write * @socket_close +-------------------------------- */ /*---------------- 以下操作都是手册上的 -------------------*/ if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) { echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n"; } if(($ret = socket_bind($sock,$ip,$port)) < 0) { echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n"; } if(($ret = socket_listen($sock,4)) < 0) { echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n"; } $count = 0; do { if (($msgsock = socket_accept($sock)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; break; } else { //发到客户端 $msg ="测试成功!\n"; socket_write($msgsock, $msg, strlen($msg)); echo "测试成功了啊\n"; $buf = socket_read($msgsock,8192); $talkback = "收到的信息:$buf\n"; echo $talkback; if(++$count >= 5){ break; }; } //echo $buf; socket_close($msgsock); } while (true); socket_close($sock); ?></span>
Dies ist der Servercode des Sockets. Führen Sie dann cmd aus und achten Sie auf den Speicherpfad Ihres eigenen Programms.
Keine Reflexion, das Serverprogramm wurde gestartet und der Port hat mit dem Abhören begonnen. Führen Sie netstat -ano aus, um den Portstatus zu überprüfen.
Sehen Sie, der Port befindet sich bereits im LISTENING-Zustand. Als nächstes müssen wir nur noch das Client-Programm ausführen, um eine Verbindung herzustellen. Code auf
<span><?php error_reporting(E_ALL); set_time_limit(0); echo "<h2>TCP/IP Connection\n"; $port = 1935; $ip = "127.0.0.1"; /* +------------------------------- * @socket连接整个过程 +------------------------------- * @socket_create * @socket_connect * @socket_write * @socket_read * @socket_close +-------------------------------- */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket $in <br>"; } while($out = socket_read($socket, 8192)) { echo "接收服务器回传信息成功!\n"; echo "接受的内容为:",$out; } echo "关闭SOCKET...\n"; socket_close($socket); echo "关闭OK\n"; ?></span>
Der Client ist jetzt verbunden Auf der Serverseite.
Fall 2: Detaillierte Codeerklärung
// Legen Sie einige grundlegende Variablen fest
$host = "192.168.1.99" ;
$port = 1234;
//Timeout festlegen
set_time_limit(0);
//Socket erstellen
$socket = socket_create(AF_INET, SOCK_STREAM, 0) oder sterben („Socketn konnte nicht erstellt werden“ );
//Socket an Port binden
$result = socket_bind($socket, $host, $port ) oder sterben("Konnte keine Verbindung zum Socket herstellen");
// Beginnen Sie mit der Überwachung des Links
$result = socket_listen($socket, 3) oder sterben("Socketlistenern konnte nicht eingerichtet werden");
// Eingehende Verbindungen akzeptieren
// Ein weiterer Socket zur Abwicklung der Kommunikation
$spawn = socket_accept($socket) oder sterben(„Eingehende Verbindung konnte nicht akzeptiert werden“);
// Erhalten Sie Eingaben vom Client
$input = socket_read($spawn , 1024) oder sterben(„Konnte Eingaben nicht lesen“);
// Lösche die Eingabezeichenfolge
$input = trim( $input );
//Client-Eingabe verarbeiten und Ergebnisse zurückgeben
$output = strrev($input) ;socket_write(
$spawn, $output , strlen ($output)) oder sterben("Konnte nicht schreibenoutputn");
// Sockets schließen
socket_close(
$ spawn);socket_close(
$socket);Im Folgenden finden Sie eine detaillierte Beschreibung jedes Schritts:Zum Beispiel:Website-Design-Unternehmen,
Design-Unternehmen ,Internet-Marketing,Internet-Werbung,Internet-Optimierung Website-Werbung, Website-Optimierung, Website-Betrieb usw. Das sind sie alle ähnlichen Schritte. 1. Der erste Schritt besteht darin, zwei Variablen zu erstellen, um die IP-Adresse und den Port des Servers zu speichern, auf dem der Socket ausgeführt wird. Sie können ihn auf Ihr eigenes Website-Design einstellen
Server und Build-Website Port (dieser Port kann eine Zahl zwischen 1 und 65535 sein), sofern dieser Port nicht verwendet wird . [In Zwischenablage kopieren]
PHP-CODE:
<h5>// Zwei Variablen festlegen <span></span>
</h5>$host <p><span>= <code><span>// 设置两个变量<br></span><span>$host </span><span>= </span><span>"192.168.1.99"</span><span>;<br></span><span>$port </span><span>= </span><span>1234</span><span>;</span><br>
"192.168.1.99"
;$port = 1234;
2. Auf der Serverseite können Sie die Funktion set_time_out() verwenden , um sicherzustellen, dass PHP beim Warten auf die Verbindung des Clients nicht abläuft .Erstellen Sie eine Website
<span>// 超时时间<br></span><span>set_time_limit</span><span>(</span><span>0</span><span>);</span><br>
[In Zwischenablage kopieren]PHP-CODE:// Timeout
set_time_limit(0
); 3. Auf der Grundlage von ist es nun an der Zeit, einen Socket mit der Funktion socket_creat() zu erstellen – diese Funktion gibt ein Socket-Handle zurück, das in allen zukünftigen WebsitesIn der Funktion von .[In Zwischenablage kopieren]PHP CODE:
<code><span>// 创建Socket<br></span><span>$socket </span><span>= </span><span>socket_create</span><span>(</span><span>AF_INET</span><span>, </span><span>SOCK_STREAM</span><span>, </span><span>0</span><span>) or die(</span><span>"Could not create<br>socketn"</span><span>);</span><br>
// Socket erstellen
$socket = socket_create
(AF_INET, SOCK_STREAM,
0) oder sterben("Konnte
);
Der erste Parameter „AF_INET“ wird verwendet, um den Domänennamen anzugeben.
<span>// 创建 socket<br></span><span>$socket </span><span>= </span><span>socket_create</span><span>(</span><span>AF_INET</span><span>, </span><span>SOCK_DGRAM</span><span>, </span><span>0</span><span>) or die(</span><span>"Could not create<br>socketn"</span><span>);</span><br>
Der zweite Parameter „SOCK_STREM“ teilt der Funktion mit, welche Klasse
(in diesem Beispiel TCP Typ ) Wenn Sie also einen UDP-Socket erstellen möchten, Sie können den folgenden Code verwenden:[In Zwischenablage kopieren]
PHP-CODE :
$socket
= <span>// 绑定 socket to 指定地址和端口<br></span><span>$result </span><span>= </span><span>socket_bind</span><span>(</span><span>$socket</span><span>, </span><span>$host</span><span>, </span><span>$port</span><span>) or die(</span><span>"Could not bind to<br>socketn"</span><span>);</span><br>
socket_create
AF_INET, SOCK_DGRAM, 0) oder sterben (
"Socketn konnte nicht erstellt werden");
4 . Sobald ein Socket-Handle erstellt wurde, besteht der nächste Schritt darin, es der angegebenen
<span>// 开始监听连接<br></span><span>$result </span><span>= </span><span>socket_listen</span><span>(</span><span>$socket</span><span>, </span><span>3</span><span>) or die(</span><span>"Could not set up socket<br>listenern"</span><span>);</span><br>
Adresse des Website-Bauunternehmens
und Enterprise-Website-Erstellung Port Dies kann über die Funktion socket_bind() erfolgen.
[In Zwischenablage kopieren]PHP CODE:
<span>//接受请求链接<br>// 调用子socket 处理信息<br></span><span>$spawn </span><span>= </span><span>socket_accept</span><span>(</span><span>$socket</span><span>) or die(</span><span>"Could not accept incoming<br>connectionn"</span><span>);</span><br>
$result
socket_bind($socket, $host, $port
) oder sterben("Konnte keine Bindung anSocketn durchführen");5. Nachdem der Socket erstellt und an einen Port gebunden wurde, können Sie mit dem Abhören von externen Connected beginnen. Mit PHP können Sie eine Website-Produktionsfirma
gründen, die über die Funktion socket_listen() abhört, und Sie können eine Zahl angeben ( In diesem Beispiel ist es der zweite Parameter: 3)
[In Zwischenablage kopieren]
PHP CODE: <span>// 读取客户端输入<br></span><span>$input </span><span>= </span><span>socket_read</span><span>(</span><span>$spawn</span><span>, </span><span>1024</span><span>) or die(</span><span>"Could not read inputn"</span><span>);<br>?&</span><span>gt</span><span>;</span><br>
// Beginnen Sie mit der Suche nach Verbindungen $result = socket_listen($socket, 3) oder sterben("Socket konnte nicht eingerichtet werden Listener");
6. Bis jetzt hat Ihr Server im Grunde nur Warten Es wird nichts getan, außer der Verbindungsanfrage vom Client. Sobald eine Client-Verbindung empfangen wird, kommt die Funktion socket_accept() ins Spiel. Sie empfängt die Verbindungsanfrage und ruft einen anderen Sub-Socket auf, um den Client zu bearbeiten – Website-ErstellungInformationen zwischen Servern.[In Zwischenablage kopieren]PHP-CODE://Anforderungslink akzeptieren// Subsocket-Prozessinformationen aufrufen$spawn = socket_accept($socket) oder sterben(„EingehendeVerbindung konnte nicht angenommen werden“);
Dieser Sub-Socket kann nun für die nachfolgende WebseitenproduktionClient-Server-Kommunikation verwendet werden. 7. Wenn eine Verbindung hergestellt ist, Webdesign Der Server wartet darauf, dass der Client einige Eingabeinformationen sendet. Diese Informationen können mit der Funktion socket_read() abgerufen und der $input-Variablen von PHP zugewiesen werden.[In Zwischenablage kopieren]PHP-CODE://Client-Eingabe lesen$input = socket_read( $spawn, 1024) oder sterben("Konnte Eingaben nicht lesen" );? >
Der zweite Parameter von socker_read wird verwendet, um die Anzahl der gelesenen Bytes anzugeben. Sie können ihn verwenden, um die Erfassung von Daten vom Client Größe.
Hinweis: Die Funktion socket_read liest immer die Daten des Shell-Clients APPEntwicklung, bis sie auf n, t oder trifft
Das Obige hat eine kurze Einführung in das Socket-Kommunikationsprinzip von PHP gegeben, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.


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

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6
Visuelle Webentwicklungstools

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

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