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

python 通過 socket 發(fā)送文件的實例代碼

 更新時間:2018年08月14日 15:08:28   作者:郭東東郭  
這篇文章主要介紹了python 通過 socket 發(fā)送文件的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

目錄結(jié)構(gòu):

client:

#!/usr/bin/env python
# -*-coding:utf-8 -*-
import socket, struct, json
download_dir = r'D:\Python\python_learning\gd\code\part3\02網(wǎng)絡(luò)編程\文件傳輸\client\download'
gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
gd_client.connect(('127.0.0.1',8123))

while True:

 #1、發(fā)命令
  cmd=input('>>: ').strip() #get a.txt
  if not cmd:continue
  gd_client.send(cmd.encode('utf-8'))
  #2、以寫的方式打開一個新文件,接收服務(wù)端發(fā)來的文件的內(nèi)容寫入客戶的新文件
  #第一步:先收報頭的長度
  obj=gd_client.recv(4)
  header_size=struct.unpack('i',obj)[0]
  # 第二步:再收報頭
  header_bytes = gd_client.recv(header_size)
  # 第三步:從報頭中解析出對真實數(shù)據(jù)的描述信息
  header_json = header_bytes.decode('utf-8')
  header_dic = json.loads(header_json)
  '''
  header_dic = {
    'filename': filename, # 1.txt
    'file_size': os.path.getsize(r'%s\%s' % (share_dir, filename)) # 路徑/1.txt
  }  
  '''
  total_size = header_dic['file_size']
  file_name = header_dic['filename']
  # 第四步:接收真實的數(shù)據(jù)
  with open(r'%s\%s'%(download_dir, file_name),'wb') as f:
    recv_size = 0
    while recv_size < total_size:
      line = gd_client.recv(1024)
      f.write(line)
      recv_size += len(line)
      print('總大?。?s  已下載大小:%s' % (total_size, recv_size))
gd_client.close()​

server:

#!/usr/bin/env python
# -*-coding:utf-8 -*-
import socket
import subprocess
import struct
import json
import os
share_dir = r'D:\Python\python_learning\gd\code\part3\02網(wǎng)絡(luò)編程\文件傳輸\server\share'
gd_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
gd_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
gd_server.bind(('127.0.0.1', 8123)) # 0-65535: 0-1024給操作系統(tǒng)使用
gd_server.listen(5)
while True:
  conn, client_addr = gd_server.accept()
  while True: # 通信循環(huán)
    try:
      # 1、收命令
      res = conn.recv(8096) # b'get 1.txt'
      if not res: break # 適用于linux操作系統(tǒng)
      # 2、解析命令,提取相應(yīng)命令參數(shù)
      cmds = res.decode('utf-8').split() # ['get','1.txt']
      filename = cmds[1]
      # 3、以讀的方式打開文件,讀取文件內(nèi)容發(fā)送給客戶端
      # 第一步:制作固定長度的報頭
      header_dic = {
        'filename': filename, # 1.txt
        'file_size':os.path.getsize(r'%s\%s'%(share_dir, filename)) # 路徑/1.txt
      }
      header_json = json.dumps(header_dic)
      header_bytes = header_json.encode('utf-8')
      # 第二步:先發(fā)送報頭的長度
      conn.send(struct.pack('i',len(header_bytes)))
      # 第三步:再發(fā)報頭
      conn.send(header_bytes)
      # 第四步:再發(fā)送真實的數(shù)據(jù)
      with open('%s/%s'%(share_dir, filename),'rb') as f:
        for line in f:
          conn.send(line)
    except ConnectionResetError: # 適用于windows操作系統(tǒng)
      break
  conn.close()
gd_server.close()​

命令輸入: get 1.txt ,然后即可將 server 端的 share文件內(nèi)的 1.txt 文件 發(fā)送到 client 端的 download文件夾下

圖片、視頻、文字都可以發(fā)送,因為傳送的是 二進制文件

原理是:server 端以讀的形式打開文件,client端以寫 的方式打開文件,然后client端把 一條一條的二進制寫入文件后保存即可。

總結(jié)

以上所述是小編給大家介紹的python 通過 socket 發(fā)送文件的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Django配置跨域并開發(fā)測試接口

    Django配置跨域并開發(fā)測試接口

    這篇文章主要介紹了Django配置跨域并開發(fā)測試接口,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 一勞永逸徹底解決pip install慢的辦法

    一勞永逸徹底解決pip install慢的辦法

    經(jīng)常在使用Python的時候需要安裝各種模塊,而pip是很強大的模塊安裝工具,這篇文章主要給大家介紹了一個可以一勞永逸徹底解決pip install慢的辦法,需要的朋友可以參考下
    2021-05-05
  • Pytorch訓(xùn)練過程出現(xiàn)nan的解決方式

    Pytorch訓(xùn)練過程出現(xiàn)nan的解決方式

    今天小編就為大家分享一篇Pytorch訓(xùn)練過程出現(xiàn)nan的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • vscode帶命令行參數(shù)進行調(diào)試的方法

    vscode帶命令行參數(shù)進行調(diào)試的方法

    文章介紹了如何在VSCode中使用命令行參數(shù)進行調(diào)試,并描述了如何通過修改`launch.json`文件來簡化調(diào)試過程
    2025-01-01
  • Python可變和不可變、類的私有屬性實例分析

    Python可變和不可變、類的私有屬性實例分析

    這篇文章主要介紹了Python可變和不可變、類的私有屬性,結(jié)合實例形式分析了Python值可變與不可變的情況及內(nèi)存地址變化,類的私有屬性定義、訪問相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python中時間datetime的處理與轉(zhuǎn)換用法總結(jié)

    Python中時間datetime的處理與轉(zhuǎn)換用法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python中時間datetime的處理與轉(zhuǎn)換用法總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • python應(yīng)用之如何使用Python發(fā)送通知到微信

    python應(yīng)用之如何使用Python發(fā)送通知到微信

    現(xiàn)在通過發(fā)微信信息來做消息通知和告警已經(jīng)很普遍了,下面這篇文章主要給大家介紹了關(guān)于python應(yīng)用之如何使用Python發(fā)送通知到微信的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • 使用Python實現(xiàn)查找PDF中的指定文本并高亮顯示

    使用Python實現(xiàn)查找PDF中的指定文本并高亮顯示

    在處理大量PDF文檔時,有時我們需要快速找到特定的文本信息,本文將提供三個Python示例來幫助你在PDF文件中快速查找并高亮指定的文本,希望對大家有所幫助
    2024-03-03
  • Python3匿名函數(shù)用法示例

    Python3匿名函數(shù)用法示例

    這篇文章主要介紹了Python3匿名函數(shù)用法,結(jié)合實例形式分析了Python3匿名函數(shù)的概念、功能、使用方法及相關(guān)操作注意事項,代碼中備有較為詳盡的注釋說明便于理解,需要的朋友可以參考下
    2018-07-07
  • Python繪圖之自定義圖類型控件實現(xiàn)混合類型圖表

    Python繪圖之自定義圖類型控件實現(xiàn)混合類型圖表

    這篇文章主要為大家詳細介紹了Python如何新建繪圖類型控件,實現(xiàn)混合類型圖表,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08

最新評論

罗源县| 永善县| 南京市| 尼勒克县| 崇文区| 兴城市| 镇赉县| 柳河县| 铜陵市| 海林市| 呼伦贝尔市| 高雄市| 山阴县| 诸城市| 东台市| 巴东县| 雷山县| 高安市| 海城市| 洛扎县| 井冈山市| 漳平市| 正镶白旗| 若羌县| 平罗县| 洛隆县| 原阳县| 尤溪县| 当雄县| 大安市| 黎平县| 扎鲁特旗| 白水县| 厦门市| 石泉县| 江阴市| 喀喇| 颍上县| 天峻县| 呼伦贝尔市| 昭觉县|