日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python怎么发送代码文件_python 通过 socket 发送文件的实例代码

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么发送代码文件_python 通过 socket 发送文件的实例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄結構:

client:

#!/usr/bin/env python

# -*-coding:utf-8 -*-

import socket, struct, json

download_dir = r'D:\Python\python_learning\gd\code\part3\02網絡編程\文件傳輸\client\download'

gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

gd_client.connect(('127.0.0.1',8123))

while True:

#1、發命令

cmd=input('>>: ').strip() #get a.txt

if not cmd:continue

gd_client.send(cmd.encode('utf-8'))

#2、以寫的方式打開一個新文件,接收服務端發來的文件的內容寫入客戶的新文件

#第一步:先收報頭的長度

obj=gd_client.recv(4)

header_size=struct.unpack('i',obj)[0]

# 第二步:再收報頭

header_bytes = gd_client.recv(header_size)

# 第三步:從報頭中解析出對真實數據的描述信息

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']

# 第四步:接收真實的數據

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網絡編程\文件傳輸\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給操作系統使用

gd_server.listen(5)

while True:

conn, client_addr = gd_server.accept()

while True: # 通信循環

try:

# 1、收命令

res = conn.recv(8096) # b'get 1.txt'

if not res: break # 適用于linux操作系統

# 2、解析命令,提取相應命令參數

cmds = res.decode('utf-8').split() # ['get','1.txt']

filename = cmds[1]

# 3、以讀的方式打開文件,讀取文件內容發送給客戶端

# 第一步:制作固定長度的報頭

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')

# 第二步:先發送報頭的長度

conn.send(struct.pack('i',len(header_bytes)))

# 第三步:再發報頭

conn.send(header_bytes)

# 第四步:再發送真實的數據

with open('%s/%s'%(share_dir, filename),'rb') as f:

for line in f:

conn.send(line)

except ConnectionResetError: # 適用于windows操作系統

break

conn.close()

gd_server.close()?

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

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

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

總結

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

本文標題: python 通過 socket 發送文件的實例代碼

本文地址: http://www.cppcns.com/jiaoben/python/237219.html

總結

以上是生活随笔為你收集整理的python怎么发送代码文件_python 通过 socket 发送文件的实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。