Einfache Punkt-zu-Punkt-Implementierung in Python
In diesem Artikel wird hauptsächlich Python für die Implementierung eines einfachen Punkt-zu-Punkt-P2P-Chats im Detail vorgestellt, der einen gewissen Referenzwert hat.
Peer-to-Point-Chat basiert zunächst auf Multi -Thread-Netzwerkprogrammierung, und der zweite Schritt besteht darin, jede Verbindung als Objekt mit eindeutigen Attributen zu speichern und der Verbindungsliste hinzuzufügen. Die von jedem Verbindungsobjekt gesendeten Informationen müssen also drei Hauptinhalte enthalten Wenn die Informationen an den Server gesendet werden, durchläuft der Server die Verbindungsliste entsprechend dem Verbindungsobjekt, um das Zielobjekt zu finden, und sendet die Informationen an das Ziel. Nachdem das Ziel die Informationen erhalten hat, weiß es, wer sie gesendet hat Antwort entsprechend der ID-Nummer. Diese Implementierung wird weiter verbessert und nachfolgende neue Funktionen werden auf meiner persönlichen Github-Homepage angezeigt
Serverseitige Implementierung:
#coding:utf-8 ''' file:server.py date:2017/9/10 12:43 author:lockey email:lockey@123.com platform:win7.x86_64 pycharm python3 desc:p2p communication serverside ''' import socketserver,json import subprocess connLst = [] ## 连接列表,用来保存一个连接的信息(代号 地址和端口 连接对象) class Connector(object):#连接对象类 def __init__(self,account,password,addrPort,conObj): self.account = account self.password = password self.addrPort = addrPort self.conObj = conObj class MyServer(socketserver.BaseRequestHandler): def handle(self): print("got connection from",self.client_address) register = False while True: conn = self.request data = conn.recv(1024) if not data: continue dataobj = json.loads(data.decode('utf-8')) #如果连接客户端发送过来的信息格式是一个列表且注册标识为False时进行用户注册 if type(dataobj) == list and not register: account = dataobj[0] password = dataobj[1] conObj = Connector(account,password,self.client_address,self.request) connLst.append(conObj) register = True continue print(connLst) #如果目标客户端在发送数据给目标客服端 if len(connLst) > 1 and type(dataobj) == dict: sendok = False for obj in connLst: if dataobj['to'] == obj.account: obj.conObj.sendall(data) sendok = True if sendok == False: print('no target valid!') else: conn.sendall('nobody recevied!'.encode('utf-8')) continue if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('192.168.1.4',8022),MyServer) print('waiting for connection...') server.serve_forever()
Client -seitige Implementierung:
#coding:utf-8 ''' file:client.py.py date:2017/9/10 11:01 author:lockey email:lockey@123.com platform:win7.x86_64 pycharm python3 desc:p2p communication clientside ''' from socket import * import threading,sys,json,re HOST = '192.168.1.4' ## PORT=8022 BUFSIZ = 1024 ##缓冲区大小 1K ADDR = (HOST,PORT) tcpCliSock = socket(AF_INET,SOCK_STREAM) tcpCliSock.connect(ADDR) userAccount = None def register(): myre = r"^[_a-zA-Z]\w{0,}" #正则验证用户名是否合乎规范 accout = input('Please input your account: ') if not re.findall(myre, accout): print('Account illegal!') return None password1 = input('Please input your password: ') password2 = input('Please confirm your password: ') if not (password1 and password1 == password2): print('Password not illegal!') return None global userAccount userAccount = accout return (accout,password1) class inputdata(threading.Thread): def run(self): while True: sendto = input('to>>:') msg = input('msg>>:') dataObj = {'to':sendto,'msg':msg,'froms':userAccount} datastr = json.dumps(dataObj) tcpCliSock.send(datastr.encode('utf-8')) class getdata(threading.Thread): def run(self): while True: data = tcpCliSock.recv(BUFSIZ) dataObj = json.loads(data.decode('utf-8')) print('{} -> {}'.format(dataObj['froms'],dataObj['msg'])) def main(): while True: regInfo = register() if regInfo: datastr = json.dumps(regInfo) tcpCliSock.send(datastr.encode('utf-8')) break myinputd = inputdata() mygetdata = getdata() myinputd.start() mygetdata.start() myinputd.join() mygetdata.join() if __name__ == '__main__': main()
Beispiel für laufende Ergebnisse:
Serverseitige Ergebnisse:
Client-Seite 1:
Client 2:
Client 3:
Das obige ist der detaillierte Inhalt vonEinfache Punkt-zu-Punkt-Implementierung in Python. 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

In diesem Artikel werden die quantitativen Handelsfunktionen der drei Hauptbörsen Binance, OKX und Gate.io untersucht, um quantitative Händler zu helfen, die richtige Plattform auszuwählen. Der Artikel stellt zunächst die Konzepte, Vorteile und Herausforderungen des quantitativen Handels ein und erklärt die Funktionen, dass eine hervorragende quantitative Handelssoftware wie API -Unterstützung, Datenquellen, Backtesting -Tools und Risikokontrollfunktionen haben sollte. Anschließend wurden die quantitativen Handelsfunktionen der drei Börsen ausführlich verglichen und analysiert, wobei sie auf ihre Vor- und Nachteile hingewiesen und schließlich Plattformauswahlvorschläge für quantitative Händler unterschiedlicher Erfahrungsstufen und Betonung der Bedeutung der Risikobewertung und des strategischen Backtests. Unabhängig davon

Deepseek Deep Learning Library Python Call Guide Deepseek ist eine leistungsstarke Deep -Learning -Bibliothek, mit der verschiedene neuronale Netzwerkmodelle erstellt und trainiert werden können. In diesem Artikel wird ausführlich vorgestellt, wie man Python verwendet, um Deepseek für Deep Learning Development anzurufen. Schritte, um Deepseek mit Python anzurufen. 1. Installieren Sie Deepseek stellen Sie sicher, dass die Python -Umgebung und die PIP -Tools installiert sind. Installieren Sie Deepseek mit dem folgenden Befehl: Pipinstalldeepseek2.

Anbi Alpha ist eine Tool- und Serviceaggregationsplattform für professionelle Händler und Investoren auf der Binance -Plattform. Zu den Kernfunktionen gehören: 1. Strategy Square, das verschiedene Handelsstrategien zusammenbringt; 2. Strategy Builder, der benutzerdefinierte Handelsstrategien ermöglicht; 3.. Erweiterte Datenanalyse, Bereitstellung von Marktanalysetools; 4. Dienste auf institutioneller Ebene, um den Bedürfnissen professioneller Investoren zu erfüllen.

Ab 2024 stützt der Mainstream-Kryptowährungsbörsen, die die direkte Sendung der Optionsabsicherungsanweisungen durch Handelsanschlüsse unterstützen: 1. Deribit unterstützt fortgeschrittene Strategien wie Delta-Absicherung und Gamma-Skalpaie und liefert Webversion/API One-Click-Absicherung. 2. OKX unterstützt Volatilitätsabsicherungs- und Strategie-Kombinationstools sowie ein integriertes Absicherungspanel im Web/der App. 3.. Binance unterstützt die Schutzabsicherung, die manuelle oder API -Kombinationspositionen erfordern. V. 5. Ledgerx, das Absicherungsinstrumente auf professioneller Ebene bietet und eine institutionelle Zertifizierung erfordert.

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

Python Parse Latex Multi-Layer-Klammern: Bauen Sie mehrdimensionales Wörterbuch viele Latex ...

Generieren Sie die Permutationskombination basierend auf Zeichensatz und Ebenenzahl. In diesem Artikel wird untersucht, wie die entsprechenden Ergebnisse der Permutationskombination basierend auf einem bestimmten Zeichensatz und einer bestimmten Schichtnummer generiert werden, um Duplikation zu vermeiden ...

Bei der Verwendung von Scapy Crawler kann der Grund, warum Pipeline persistente Speicherdateien nicht geschrieben werden kann? Diskussion beim Lernen, Scapy Crawler für Data Crawler zu verwenden, begegnen Sie häufig auf eine ...
