Einführung in die Methode zur Realisierung einer nicht blockierenden Kommunikation zwischen Client und Server mithilfe von SocketServer in Python

高洛峰
Freigeben: 2017-03-20 11:47:48
Original
1691 Leute haben es durchsucht

Verwenden Sie das SocketServer-Modul, um eine gleichzeitige Verbindung und nicht blockierende Kommunikation zwischen Netzwerk-Clients und -Servern zu realisieren.

Lassen Sie uns zunächst die im SocketServer-Modul verfügbaren Klassen verstehen:

BaseServer: Enthält den Kern des Servers Die Funktion ist an die Mix-In-Klasse gebunden. Diese Klasse wird nur zur Ableitung verwendet. Daher werden keine Instanzen dieser Klasse generiert.
TCPServer/UDPServer: Grundlegender TCP/UDP-Server für die Netzwerksynchronisierung.
UnixStreamServer/UnixDatagramServer: Grundlegender dateibasierter Synchronisierungs-TCP/UDP-Server.
FürkingMixIn/ThreadingMixIn: Implementiert den Kernprozess oder Threading-Funktionen als Hybridklasse, die zusammen mit der Serverklasse verwendet wird, um einige asynchrone Funktionen bereitzustellen;
ForkingTCPServer/ForkingUDPServer: Eine Kombination aus ForkingMixIn und TCPServer/UDPServer.
BaseRequestHandler: Enthält die Kernfunktionalität für die Bearbeitung von Serviceanfragen. Diese Klasse dient nur der Ableitung, daher werden keine Instanzen dieser Klasse generiert. Erwägen Sie die Verwendung von StreamRequestHandler oder DatagramRequestHandler.
StreamRequestHandler/ DatagramRequestHandler: Dienstverarbeitungstool für TCP/UDP-Server.

Jetzt betreten wir offiziell das Thema. Hier verwenden wir StreamRequestHandler und ThreadingTCPServer, um gleichzeitige nicht blockierende Socket-Verbindungen zwischen dem Client und dem Server zu realisieren.

ThreadingTCPServer ist von ThreadingMixIn abgeleitet und implementiert hauptsächlich die Kernprozesskombination und Threading-Funktion.

StreamRequestHandler wird hauptsächlich als Dienstverarbeitungstool für TCP/UDP-Server verwendet.

1. SocketServerTCP-Server erstellen

#创建SocketServerTCP服务器:  
import SocketServer  
from SocketServer import StreamRequestHandler as SRH  
from time import ctime  
  
host = 'xxx.xxx.xxx.xxx'  
port = 9999  
addr = (host,port)  
  
class Servers(SRH):  
    def handle(self):  
        print 'got connection from ',self.client_address  
        self.wfile.write('connection %s:%s at %s succeed!' % (host,port,ctime()))  
        while True:  
            data = self.request.recv(1024)  
            if not data:   
                break  
            print data  
            print "RECV from ", self.client_address[0]  
            self.request.send(data)  
print 'server is running....'  
server = SocketServer.ThreadingTCPServer(addr,Servers)  
server.serve_forever()
Nach dem Login kopieren

2. SocketServerTCP-Client erstellen

#from socket
from socket import *  
  
host = 'xxx.xxx.xxx.xxx'  
port = 9999  
bufsize = 1024  
addr = (host,port)  
#client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client = socket(AF_INET,SOCK_STREAM)  
client.connect(addr)  
while True:  
    data = raw_input()  
    if not data or data=='exit':  
        break  
    client.send('%s\r\n' % data)  
    data = client.recv(bufsize)  
    if not data:  
        break  
    print data.strip()  
client.close()
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Realisierung einer nicht blockierenden Kommunikation zwischen Client und Server mithilfe von SocketServer in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage