最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用python socket模塊實(shí)現(xiàn)簡單的文件下載

 更新時間:2020年09月04日 10:20:11   作者:侯賽雷  
這篇文章主要介紹了如何使用python socket模塊實(shí)現(xiàn)簡單的文件下載,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

server端:

# ftp server端
import socket, os, time
 
server = socket.socket()
server.bind(("localhost", 8080))
server.listen()
while True:
  conn, addr = server.accept()
  print("連接到客戶端:", addr)
  while True:
    try: # windows會直接報錯,需要捕獲異常
      data = conn.recv(1024)
      if not data:
        print("客戶端已斷開")
        break
    except Exception as e:
      print("客戶端已經(jīng)斷開")
      break
    cmd, filename = data.decode().split() # ex: get name.txt
    if os.path.isfile(filename):
      f = open(filename, "rb")
      # 獲取文件的字節(jié)大小
      size = os.stat(filename).st_size
      conn.send(str(size).encode()) # 發(fā)送文件大小
      conn.recv(1024)
      for line in f:  # 客戶端確認(rèn)后發(fā)送文件內(nèi)容
        conn.send(line)
      f.close()
      print("文件下載完成")
    conn.send("not file".encode())
server.close()

client端:

import socket
 
client = socket.socket()
client.connect(("localhost", 8080))
while True:
  cmd = input(">>:").strip()
  if len(cmd)==0: continue
  if cmd.startswith("get"):
    client.send(cmd.encode()) # 發(fā)送請求
    server_response = client.recv(1024)
    if server_response.decode().startswith("not"):
      print("請輸入有效文件名")
      continue
    client.send(b"ready to recv file") # 發(fā)送確認(rèn)
    file_size = int(server_response.decode()) # 獲取文件大小
    rece_size=0
    filename = cmd.split()[1]
    f = open(filename + ".new", "wb")
    while rece_size < file_size:
      if file_size - rece_size > 1024: # 要收不止一次
        size = 1024
      else: # 最后一次了,剩多少收多少,防止之后發(fā)送數(shù)據(jù)粘包
        size = file_size - rece_size
        print("last receive:", size)
      recv_data = client.recv(size)
      rece_size += len(recv_data) # 累加接受數(shù)據(jù)大小
      f.write(recv_data) # 寫入文件,即下載
    else:
      print("文件下載完成")
      f.close()
client.close()

測試案例:

以上就是如何使用python socket模塊實(shí)現(xiàn)簡單的文件下載的詳細(xì)內(nèi)容,更多關(guān)于python socket文件下載的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python處理日期和時間的方法總結(jié)

    Python處理日期和時間的方法總結(jié)

    這篇文章主要介紹了Python時間和日期的處理方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • python實(shí)現(xiàn)春晚魔術(shù)的示例代碼

    python實(shí)現(xiàn)春晚魔術(shù)的示例代碼

    本文主要介紹了python實(shí)現(xiàn)春晚魔術(shù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • python實(shí)現(xiàn)自動售貨機(jī)

    python實(shí)現(xiàn)自動售貨機(jī)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動售貨機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python功能鍵的讀取方法

    Python功能鍵的讀取方法

    這篇文章主要介紹了Python功能鍵的讀取方法,涉及Python鍵盤事件的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Python中的類學(xué)習(xí)筆記

    Python中的類學(xué)習(xí)筆記

    這篇文章主要介紹了Python中的類學(xué)習(xí)筆記,本文是個人學(xué)習(xí)總結(jié),用實(shí)例講解了類的定義、訪問控制等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • PyCharm2020.1.2社區(qū)版安裝,配置及使用教程詳解(Windows)

    PyCharm2020.1.2社區(qū)版安裝,配置及使用教程詳解(Windows)

    這篇文章主要介紹了PyCharm2020.1.2社區(qū)版安裝,配置及使用教程(Windows),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 利用Python抓取行政區(qū)劃碼的方法

    利用Python抓取行政區(qū)劃碼的方法

    做項目的時候會需要用到各個行政區(qū)劃的代碼,最近就碰巧遇到有這個需求,于是就上網(wǎng)搜了一下,測試后分享給大家,這篇文章就給大家分享了利用Python抓取行政區(qū)劃碼的示例代碼,有需要的朋友們可以參考借鑒,下面跟著小編一起去學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • numpy創(chuàng)建神經(jīng)網(wǎng)絡(luò)框架

    numpy創(chuàng)建神經(jīng)網(wǎng)絡(luò)框架

    本文介紹了使用numpy從零搭建了一個類似于pytorch的深度學(xué)習(xí)框架,可以用在很多地方,有需要的朋友可以自行參考一下
    2021-08-08
  • Python爬蟲獲取基金凈值信息詳情

    Python爬蟲獲取基金凈值信息詳情

    這篇文章主要介紹了Python爬蟲獲取基金凈值信息詳情,文章基于錢兩篇文章的內(nèi)容圍繞python的相關(guān)資料展開詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • python 3調(diào)用百度OCR API實(shí)現(xiàn)剪貼板文字識別

    python 3調(diào)用百度OCR API實(shí)現(xiàn)剪貼板文字識別

    這篇文章主要為大家詳細(xì)介紹了python 3調(diào)用百度OCR API實(shí)現(xiàn)剪貼板文字識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論

邵东县| 两当县| 汽车| 崇仁县| 徐闻县| 吉木乃县| 安仁县| 微山县| 枣阳市| 南康市| 阿荣旗| 禄丰县| 资源县| 伊春市| 会东县| 东宁县| 大渡口区| 诏安县| 札达县| 电白县| 松江区| 北海市| 通化县| 扶沟县| 囊谦县| 昆山市| 隆安县| 东乡族自治县| 甘德县| 宜都市| 习水县| 沽源县| 连江县| 东兰县| 察雅县| 鄄城县| 儋州市| 揭东县| 麻江县| 沙坪坝区| 稻城县|