Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Python3, um das TCP-Protokoll zu implementieren?

Wie verwende ich Python3, um das TCP-Protokoll zu implementieren?

零下一度
零下一度Original
2017-06-16 10:51:482003Durchsuche

Der folgende Editor zeigt Ihnen einen einfachen Server- und Client-Fall (Freigabe) der Implementierung des TCP-Protokolls in Python3. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

Verwenden Sie Python3, um das TCP-Protokoll zu implementieren, das UDP ähnelt. UDP wird für die Echtzeitkommunikation verwendet, während das TCP-Protokoll zur Übertragung von Dateien, Befehlen und anderen Vorgängen verwendet wird, da diese Daten nicht verloren gehen dürfen, da es sonst zu Dateifehlern oder Befehlsverwirrungen kommt. Der folgende Code simuliert den Client, der den Server über die Befehlszeile bedient. Der Client gibt den Befehl ein, der Server führt ihn aus und gibt das Ergebnis zurück.

TCP (Transmission Control Protocol): ist ein verbindungsorientiertes, zuverlässiges, Bytestrom-basiertes Transportschicht-Kommunikationsprotokoll, das von der IETF-Definition von RFC 793 entwickelt wurde.

TCP-Client


from socket import *

host = '192.168.48.128'
port = 13141
addr = (host,port)
bufsize=1024

tcpClient = socket(AF_INET,SOCK_STREAM) # 这里的参数和UDP不一样。
tcpClient.connect(addr) #由于tcp三次握手机制,需要先连接

while True:
  data = input('>>> ').encode(encoding="utf-8")
  if not data:
    break
  # 数据收发和UDP基本一致
  tcpClient.send(data) 
  data = tcpClient.recv(bufsize).decode(encoding="utf-8") 
  print(data)

tcpClient.close()

TCP-Client


from socket import *
from time import ctime
import os 

host = ''
port = 13140
bufsize = 1024
addr = (host,port)

tcpServer = socket(AF_INET,SOCK_STREAM)
tcpServer.bind(addr)
tcpServer.listen(5) #这里设置监听数为5(默认值),有点类似多线程。

while True:
  print('Waiting for connection...')
  tcpClient,addr = tcpServer.accept() #拿到5个中一个监听的tcp对象和地址
  print('[+]...connected from:',addr)

  while True:
    cmd = tcpClient.recv(bufsize).decode(encoding="utf-8") 
    print('  [-]cmd:',cmd)
    if not cmd:
      break
    ###这里在cmd中执行来自客户端的命令,并且将结果返回###
    cmd = os.popen(cmd) ###os.popen(cmd)对象是file对象子类,所以可以file的方法
    cmdResult = cmd.read()
    cmdStatus = cmd.close()
    #################################################
    data = cmdResult if (not cmdStatus) else "ERROR COMMAND"
    tcpClient.send(data.encode(encoding="utf-8"))

  tcpClient.close() #
  print(addr,'End')
tcpServer.close() #两次关闭,第一次是tcp对象,第二次是tcp服务器

Das obige ist der detaillierte Inhalt vonWie verwende ich Python3, um das TCP-Protokoll zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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