Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.

ss.png

Zweck

Es gibt viele unsichere Teile aufgrund der Art, was wir tun, also nur für Tests und Hobbys.

Umgebung

Serverseite

Bereiten Sie den Server vor. In meinem Beispiel habe ich Sakuras VPS ausgeliehen.

Umgebung

(Hinweis) Vorsichtsmaßnahmen bei der Verwendung von Sakuras VPS

Fügen Sie über das Bedienfeld Einstellungen für die Paketfilterung hinzu. Sie können es ausschalten, es wird jedoch nicht empfohlen, da es nicht gut für die Sicherheit ist.

sakura01.png

In diesem Beispiel wollte ich die Portnummer "50000" verwenden, also habe ich sie vorübergehend deaktiviert.

image.png

Porteinstellungen

Nach Bedarf einstellen. Dieses Beispiel ist das VPS-Einstellungsbeispiel von Sakura. Ändern Sie auch die Portnummer nach Ihren Wünschen.

$ firewall-cmd --zone=public --add-port=50000/tcp --permanent

Vergessen Sie nicht, die Einstellungen wiederzugeben!

$ firewall-cmd --reload

Installieren Sie PHP

In diesem Beispiel ist php7.3 installiert.

remi

$ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Es gibt viele zusätzliche Dinge, aber bitte ändern Sie sie nach Bedarf.

$ yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

Erstellen Sie einen Socket-Server mit PHP-WebSocket

In diesem Beispiel wird die externe Bibliothek PHP-WebSocket verwendet.

Legen Sie Binärdateien hier in Ihrem Apache-Verzeichnis ab.

$ cd /var/www/html
$ wget https://github.com/nicokaiser/php-websocket/archive/php-websocket.zip
$ unzip php-websocket.zip
$ sudo rm -rf php-websocket.zip

Bearbeiten Sie nach dem Herunterladen server.php in php-websocket / server. Wenn vim nicht installiert ist, verwenden Sie vi oder installieren Sie es mit yum -y install vim.

$ cd php-websocket/server
$ vim server.php

Ändern und speichern Sie "" und "50000 (Port)" entsprechend.

<?php

error_reporting(0);

require(__DIR__ . '/lib/SplClassLoader.php');

$classLoader = new SplClassLoader('WebSocket', __DIR__ . '/lib');
$classLoader->register();

$server = new \WebSocket\Server('<Globale IPv4-Adresse>', 50000);
$server->registerApplication('echo', \WebSocket\Application\EchoApplication::getInstance());
$server->registerApplication('time', \WebSocket\Application\TimeApplication::getInstance());
$server->run();

Schreiben Sie dann die Handshake-Funktion in "php-websocket / lib / WebSocket / Connection.php" neu. Schreiben Sie die Handshake-Funktion in der Zeile 28 wie folgt um.

private function handshake($data)
{
    socket_write($this->socket, $data, strlen($data));
    $this->application->onConnect($this);
    return true;
}

Starten Sie den WebSocket-Server

Beginnen Sie mit dem folgenden Befehl.

$ php server.php

In diesem Fall ist der Serverstart abgeschlossen. Gehen Sie weiter zum Client.

[root@~]# php server.php 
2020-09-14 14:02:13 [info] Server created

Client-Seite (Python)

Clientseitiger Code, der Daten sendet.

--Ersetzen Sie ""

import socket

if __name__ == '__main__':
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        sock.connect(('<Globale IPv4-Adresse>', 50000))
        data = 'Hello From Python Client!'
        sock.send(data.encode())
        print(sock.recv(1024).decode())

Versuche zu schlagen

Wenn die übertragenen Daten wiedergegeben werden, ist dies erfolgreich. Es ist ein kleiner Schubser, aber ich konnte es vorerst tun.

ss.png

[root@myserver]# php server.php 
2020-09-14 15:00:53 [info] Server created
2020-09-14 15:00:55 [info] [client XXX] Connected

abschließend

Es war unerwartet lästig. .. Danke für Ihren Besuch.

Recommended Posts

Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe eine funktionale Sprache mit Python ausprobiert
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Socket-Kommunikation mit Python
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich möchte ein Spiel mit Python machen
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Ich möchte mit Python in eine Datei schreiben
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Als ich mit VScode eine Verbindung zu einem entfernten Jupyter-Server herstellte, war dieser entfernt, aber lokal.
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte einen Quantencomputer mit Python betreiben
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Ich habe fp-Wachstum mit Python versucht
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, verschiedene Informationen von Remote-PC aus Python von WMI Library zu extrahieren
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Ich habe versucht, automatisch die Zeichenfolge zu generieren, die mit Python in Mr. Adjustment eingegeben werden soll
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
Ich habe versucht, Stückpreisdaten nach Sprache mit Real Gachi von Python zu aggregieren und zu vergleichen
Ich habe versucht, einen Pandas-Datenrahmen zu erstellen, indem ich mit Python Informationen zum Lebensmittelrückruf abgekratzt habe
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren