Kommunikationsverarbeitung durch Python

Kommunikationsverarbeitung durch Python Dieser Artikel ist der 21. Tagesartikel des Adventskalenders 2015 der Keio University SFC Murai & Tokuda Lab.

1. Zuallererst

Bis zum Sommer fing ich ab dem Herbstsemester an, den PC zu berühren, weil ich angewidert war, über Forschungsbedeutung und -dienste zu sprechen, ohne ihn auf der Ebene "UNIX-Befehl" zu implementieren. Dann fing ich an, Swift, Python zu berühren und jetzt schreibe ich Python.

Immerhin bin ich neu in der Programmierung. Dieses Mal werde ich über Socket-Kommunikation in Python schreiben.

Inhalt dieser Zeit

Richten Sie einen TCP-Server nur mit Python ein und führen Sie eine Socket-Kommunikation mit einem TCP-Client durch.

2. Umwelt

3. Quellcodetext und -verfahren (siehe Kommentar)

Da es einige Unterschiede in der Handhabung von Datentypen zwischen Python2- und 3-Serien gibt, habe ich eine Korrektur hinzugefügt. (Auch print () und input ())

Grundsätzlich werden wir die Schritte mit der Socket-Bibliothek ausführen. Lassen Sie uns zunächst einen TCP-Client erstellen.

client.py (Python2-Serie)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Geben Sie den Hostnamen Ihres Servers ein
port = xxxx #Ich werde einen geeigneten PORT angeben

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Erstellen Sie ein Objekt

client.connect((host, port)) #Stellen Sie nun eine Verbindung zum Server her

client.send("from nadechin") #Senden Sie die entsprechenden Daten (wie der Empfänger weiß)

response = client.recv(4096) #Empfangen sollte eine angemessene Potenz von 2 sein (nicht zu groß)

print response

client.py (Python3-Serie)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Geben Sie den Hostnamen Ihres Servers ein
port = xxxx #Ich werde einen geeigneten PORT angeben

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Erstellen Sie ein Objekt

client.connect((host, port)) #Stellen Sie nun eine Verbindung zum Server her

massage = "from nadechin"

client.send(massage.encode('utf-8')) #Senden Sie die entsprechenden Daten (wie der Empfänger weiß)

response = client.recv(4096) #Empfangen sollte eine angemessene Potenz von 2 sein (nicht zu groß)

print(response)

Es ist die Basis für Server und Clients, die Python verwenden, und kann durch Erweiterung weit verbreitet werden. UDP-Clients können auf die gleiche Weise erstellt werden. (Für die UDP-Kommunikation muss connect () nicht aufgerufen werden.)

Als Nächstes erstellen wir einen TCP-Server. Selbstverständlich wird dies ebenso wie das TCP-Client-Formular geschrieben.

server.py (Python2-Serie)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Geben Sie den Hostnamen Ihres Servers ein
port = xxxx #Ich werde den gleichen PORT-Satz auf dem Client angeben

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port)) #Binden Sie durch Angabe von IP und PORT
serversock.listen(10) #Warten Sie auf eine Verbindung (geben Sie die maximale Anzahl von Warteschlangen an).

print 'Waiting for connections...'
clientsock, client_address = serversock.accept() #Speichern Sie Daten, wenn eine Verbindung besteht

while True:
    rcvmsg = clientsock.recv(1024)
    print 'Received -> %s' % (rcvmsg)
    if rcvmsg == '':
      break
    print 'Type message...'
    s_msg = raw_input()
    if s_msg == '':
      break
    print 'Wait...'

    clientsock.sendall(s_msg) #Gibt eine Nachricht zurück
clientsock.close()

server.py (Python3-Serie)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Geben Sie den Hostnamen Ihres Servers ein
port = xxxx #Ich werde den gleichen PORT-Satz auf dem Client angeben

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port)) #Binden Sie durch Angabe von IP und PORT
serversock.listen(10) #Warten Sie auf eine Verbindung (geben Sie die maximale Anzahl von Warteschlangen an).

print('Waiting for connections...')
clientsock, client_address = serversock.accept() #Speichern Sie Daten, wenn eine Verbindung besteht

while True:
    rcvmsg = clientsock.recv(1024)
    print('Received -> %s' % (rcvmsg))
    if rcvmsg == '':
      break
    print('Type message...')
    s_msg = input().replace('b', '').encode('utf-8')
    if s_msg == '':
      break
    print('Wait...')

    clientsock.sendall(s_msg) #Gibt eine Nachricht zurück
clientsock.close()

4. Probieren Sie es aus

1

Serverseite (CentOS)


$ python server.py
Waiting for connections...

2

Client-Seite (MacBook)


$ python client.py 

3

Serverseite (CentOS)


$ python server.py
Waiting for connections...
Received -> from nadechin
Type message...
Hello World!

4

Client-Seite (MacBook)


$ python client.py 
Hello World!

5

Serverseite (CentOS)


$ python server.py
Waiting for connections...
Received -> from nadechin
Type message...
Hello World!
Wait...
Received -> 

Sie können sich so ein wenig unterhalten. Wenn Sie die Methode ändern, können Sie auf unbestimmte Zeit austauschen, oder wenn Sie das Akzeptieren der Nachricht ignorieren, können Sie das Recht behalten, auch nach dem Sprechen zu sprechen.

5. Schlussfolgerung

Es war eine Ankündigung, die sich wie ein kleiner Fisch anfühlt, aber danke, dass Sie mir die Gelegenheit gegeben haben, an einem solchen Ort zu schreiben. In Zukunft möchte ich nach und nach die Sprache C lernen und mein Verständnis des Netzwerks vertiefen.

6. Nachtrag

Ich habe Socket-Programmierung in C-Sprache durchgeführt und bestätigt, dass ich es tatsächlich tun kann. In letzter Zeit habe ich viele Dinge gegessen, aber ich fange an, mich für Honeypot und Systemprogrammierung zu interessieren, also werde ich wieder schreiben, wenn jedes Ergebnis herauskommt.

Verweise

Justin Seitz (2014) "Cyber-Sicherheitsprogrammierung" Kazushi Aoki, Yu Arai, Saya Ichinose, Makoto Iwamura, Yuhei Kawakotani, Yuji Hoshizawa

Recommended Posts

Kommunikationsverarbeitung durch Python
Socket-Kommunikation und Multithread-Verarbeitung durch Python
Bildverarbeitung mit Python (Pillow)
100 Sprachverarbeitung Knock Kapitel 1 von Python
Python-Bildverarbeitung
Python-Dateiverarbeitung
Bildverarbeitung durch Python 100 Knock # 1 Kanalersatz
Graustufen durch Matrix-Reinventor der Python-Bildverarbeitung-
Bildverarbeitung mit Python 100 Knock # 6 Farbreduktionsverarbeitung
Socket-Kommunikation in C-Sprache und Python
Primzahlbeurteilung durch Python
Python verteilte Verarbeitung Spartan
Serielle Kommunikation mit Python
Dateiverarbeitung in Python
Python: Verarbeitung natürlicher Sprache
Visualisierungsnotiz von Python
Multithread-Verarbeitung in Python
Erste Python-Bildverarbeitung
Textverarbeitung mit Python
Verarbeitung in Python beenden
WiringPi-SPI-Kommunikation mit Python
Bildverarbeitung mit Python
HTTP-Kommunikation mit Python
Beamformer-Antwort von Python
Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
Abbildung zur Verarbeitung von Python-Zeichenfolgen
Verschiedene Verarbeitung von Python
[Sprachverarbeitung 100 Schläge 2020] Zusammenfassung der Antwortbeispiele von Python
Bildverarbeitung durch Matrix Basics & Contents-Reinventor der Python-Bildverarbeitung-
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Lernen Sie die asynchrone Verarbeitung / Collouts von Python im Vergleich zu Node.js
Bildverarbeitung mit Python (Teil 2)
100 Sprachverarbeitungsklopfen mit Python 2015
UTF8-Textverarbeitung mit Python
Spracherkennung durch Python MFCC
"Apple-Verarbeitung" mit OpenCV3 + Python3
EXE Web API von Python
Newcomer Trainingsprogramm von Python
Parametereinstellung durch Python Configparser
Pin Python von Conda verwaltet
Akustische Signalverarbeitung mit Python (2)
Asynchrone Verarbeitung (Threading) in Python
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Einführung in die serielle Kommunikation [Python]
Bildverarbeitung mit Python (Teil 1)
Keyword-Extraktion mit MeCab (Python)
Zahlen durch 3 Ziffern trennen (Python)
Markov-Schaltmodell von Python
Bildverarbeitung mit Python (3)
Nachbearbeitung von Python (NG)
Python wurde von C-Programmierern gestartet
Bildverarbeitungssammlung in Python
Verwenden des Python-Modus in der Verarbeitung
Plattform (OS) Beurteilung durch Python
Sortieren nach Datum in Python
[Python] Iterative Verarbeitung (für, während)
[Python] Bildverarbeitung mit Scicit-Image
Verarbeiten Sie große Excel-Dateien mit Python, um die Produktivität zu verbessern