Heim Backend-Entwicklung Python-Tutorial Einfache Punkt-zu-Punkt-Implementierung in Python

Einfache Punkt-zu-Punkt-Implementierung in Python

Sep 15, 2017 am 10:48 AM
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()
Nach dem Login kopieren

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

Beispiel für laufende Ergebnisse:

Serverseitige Ergebnisse:

Einfache Punkt-zu-Punkt-Implementierung in Python

Client-Seite 1:

Einfache Punkt-zu-Punkt-Implementierung in Python

Client 2:

Einfache Punkt-zu-Punkt-Implementierung in Python

Client 3:

Einfache Punkt-zu-Punkt-Implementierung in Python

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!

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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 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)

Quantitative Währungssoftware Quantitative Währungssoftware Mar 19, 2025 pm 04:06 PM

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

So implementieren Sie Anrufe mit Python - Deepseek Python Call Method Guide So implementieren Sie Anrufe mit Python - Deepseek Python Call Method Guide Mar 12, 2025 pm 12:51 PM

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.

Was ist Binance Alpha Was ist Binance Alpha Mar 25, 2025 pm 03:39 PM

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.

Welche Börsen können Optionsabsicherungsanweisungen über die Handelsseite senden Welche Börsen können Optionsabsicherungsanweisungen über die Handelsseite senden Mar 28, 2025 pm 03:27 PM

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.

Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Apr 01, 2025 pm 02:48 PM

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 ...

Wie kann man mehrschichtige verschachtelte Klammern in Latexformeln effizient analysieren und in ein multidimensionales Wörterbuch umwandeln? Wie kann man mehrschichtige verschachtelte Klammern in Latexformeln effizient analysieren und in ein multidimensionales Wörterbuch umwandeln? Apr 01, 2025 am 08:57 AM

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

Wie generiere ich nicht repetitive Permutationskombinationen basierend auf Charaktersatz und Anzahl der Ebenen und schließen alle Zeichen derselben Kombinationen aus? Wie generiere ich nicht repetitive Permutationskombinationen basierend auf Charaktersatz und Anzahl der Ebenen und schließen alle Zeichen derselben Kombinationen aus? Apr 01, 2025 am 06:57 AM

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 ...

Was ist der Grund, warum Pipeline persistente Speicherdateien bei der Verwendung von Scapy Crawler nicht geschrieben werden kann? Was ist der Grund, warum Pipeline persistente Speicherdateien bei der Verwendung von Scapy Crawler nicht geschrieben werden kann? Apr 01, 2025 pm 04:03 PM

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 ...

See all articles