日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python3實(shí)現(xiàn)TCP協(xié)議的簡(jiǎn)單服務(wù)器和客戶端案例(分享)

系統(tǒng) 1957 0

利用python3來(lái)實(shí)現(xiàn)TCP協(xié)議,和UDP類似。 UDP應(yīng)用于及時(shí)通信,而TCP協(xié)議用來(lái)傳送文件、命令等操作,因?yàn)檫@些數(shù)據(jù)不允許丟失,否則會(huì)造成文件錯(cuò)誤或命令混亂。下面代碼就是模擬客戶端通過(guò)命令行操作服務(wù)器。客戶端輸入命令,服務(wù)器執(zhí)行并且返回結(jié)果。

TCP(Transmission Control Protocol 傳輸控制協(xié)議): 是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。

TCP客戶端

            
from socket import *

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

tcpClient = socket(AF_INET,SOCK_STREAM) # 這里的參數(shù)和UDP不一樣。
tcpClient.connect(addr) #由于tcp三次握手機(jī)制,需要先連接

while True:
  data = input('>>> ').encode(encoding="utf-8")
  if not data:
    break
  # 數(shù)據(jù)收發(fā)和UDP基本一致
  tcpClient.send(data) 
  data = tcpClient.recv(bufsize).decode(encoding="utf-8") 
  print(data)

tcpClient.close()
          

TCP客戶端

            
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) #這里設(shè)置監(jiān)聽數(shù)為5(默認(rèn)值),有點(diǎn)類似多線程。

while True:
  print('Waiting for connection...')
  tcpClient,addr = tcpServer.accept() #拿到5個(gè)中一個(gè)監(jiān)聽的tcp對(duì)象和地址
  print('[+]...connected from:',addr)

  while True:
    cmd = tcpClient.recv(bufsize).decode(encoding="utf-8") 
    print('  [-]cmd:',cmd)
    if not cmd:
      break
    ###這里在cmd中執(zhí)行來(lái)自客戶端的命令,并且將結(jié)果返回###
    cmd = os.popen(cmd) ###os.popen(cmd)對(duì)象是file對(duì)象子類,所以可以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() #兩次關(guān)閉,第一次是tcp對(duì)象,第二次是tcp服務(wù)器
          

以上這篇python3實(shí)現(xiàn)TCP協(xié)議的簡(jiǎn)單服務(wù)器和客戶端案例(分享)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 永宁县| 常德市| 兰坪| 东丰县| 时尚| 砀山县| 庆云县| 永胜县| 四川省| 四会市| 上林县| 博乐市| 沙坪坝区| 夏河县| 连平县| 鄂托克前旗| 太湖县| 宜兰县| 九龙县| 乌海市| 修文县| 奈曼旗| 临猗县| 绍兴市| 江孜县| 旅游| 屏边| 禄劝| 牟定县| 芮城县| 江孜县| 商河县| 天峨县| 崇明县| 永定县| 曲周县| 深水埗区| 纳雍县| 金湖县| 巫溪县| 山西省|