In diesem Artikel wird hauptsächlich die Methode zur Implementierung einer einfachen Socket-Kommunikation in Python vorgestellt und die spezifischen Implementierungstechniken von Socket-Kommunikationsservern und -Clients anhand von Beispielen analysiert
Das Beispiel in diesem Artikel beschreibt, wie Python eine einfache Socket-Kommunikation implementiert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Ich habe gerade angefangen, mit Python in Kontakt zu treten und ein Helloworld-Programm implementiert – eine Socket-Kommunikationsdemo über das UDP-Protokoll.
Zunächst ist die Implementierung auf der Serverseite wie folgt:
import socket, traceback host = '' # Bind to all interfaces port = 51500 # Step1: 创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Step2: 设置socket选项(可选) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Step3: 绑定到某一个端口 s.bind((host, port)) # Step4: 监听该端口上的连接 while 1: try: message, address = s.recvfrom(8192) print "Got data from ", address s.sendto("Data is received succeefully.", address) except (KeyboardInterrupt, SystemExit): print "raise" raise except : print "traceback" traceback.print_exc()
Dabei ist der Host auf leer gesetzt, was bedeutet, dass Es kann an alle Schnittstellen und Adressen gebunden werden, unabhängig davon, welcher Client die Anfrage stellt. Solange es an denselben Port gebunden ist, kann der Server die Anfrage überwachen.
In einer TCP-Verbindung müssen Sie zum Überwachen von Client-Anfragen die Funktion Listeen oder Acceptverwenden und über einen dedizierten Socket und eine Remote-Verbindung verfügen.
Dann lassen Sie unserenClient implementieren:
import socket, sys # Step1: 输入host和port信息 host = raw_input('please input host name: ') textport = raw_input('please input textport: ') # Step2: 创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: port = int(textport) except ValueError: port = socket.getservbyname(textport, 'udp') # Step3: 打开socket连接 s.connect((host, port)) # Step4: 发送数据 print "Enter data to transmit: " data = sys.stdin.readline().strip() s.sendall(data) # Step5: 接收服务器发过来的数据 print "Looking for replies; press Ctrl-C or Ctrl-Break to stop" while 1: buf = s.recv(2048) if not len(buf): break sys.stdout.write(buf)
ist fast identisch. Es scheint, dass die Implementierung in verschiedenen Sprachen fast gleich sein wird, solange man die Socket-Programmierung versteht.
Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung einer einfachen Socket-Kommunikation mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!