python實現用socket傳輸檔案

2021-07-06 03:40:13 字數 2033 閱讀 2297



python傳輸檔案最重要的有兩步:

1).將要傳輸的檔案的資訊傳送過去,包括檔案包,大小以及其它資訊;

2).傳送端讀取檔案內容並傳送過去,接受端將快取裡面的內容寫入檔案.

傳送端:

# -*- coding: cp936 -*-

from socket import *

import os

import struct

addr = ('192.168.0.178',8000)

bufsize = 1024

filename = 'wubi.exe'

fileinfo_size=struct.calcsize('128s32si8s')

sendsock = socket(af_inet,sock_stream)

sendsock.connect(addr)

fhead=struct.pack('128s11i',filename,0,0,0,0,0,0,0,0,os.stat(filename).st_size,0,0)

sendsock.send(fhead)

fp = open(filename,'rb')

while 1:

filedata = fp.read(bufsize)

if not filedata: break

sendsock.send(filedata)

print "檔案傳送完畢,正在斷開連線..."

fp.close()

sendsock.close()

print "連線已關閉..."

接收端:

# -*- coding: cp936 -*-

from socket import *

import struct

addr = ('192.168.0.178',8000)

bufsize = 1024

fileinfo_size=struct.calcsize('128s32si8s')

recvsock = socket(af_inet,sock_stream)

recvsock.bind(addr)

recvsock.listen(true)

print "等待連線..."

conn,addr = recvsock.accept()

print "客戶端已連線—> ",addr

fhead = conn.recv(fileinfo_size)

filename,temp1,filesize,temp2=struct.unpack('128s32si8s',fhead)

#print filename,temp1,filesize,temp2

print filename,len(filename),type(filename)

print filesize

filename = 'new_'+filename.strip('\00') #...

fp = open(filename,'wb')

restsize = filesize

print "正在接收檔案... ",

while 1:

if restsize > bufsize:

filedata = conn.recv(bufsize)

else:

filedata = conn.recv(restsize)

if not filedata: break

fp.write(filedata)

restsize = restsize-len(filedata)

if restsize == 0:

break

print "接收檔案完畢,正在斷開連線..."

fp.close()

conn.close()

recvsock.close()

print "連線已關閉..."

該程式經過實際測試可用,大家經過修改相應**即可在本地進行測試使用。

用於傳送比較大的檔案時會比較慢,還可能照成命令列假死的情況...

python123登入 python實現使用者登入

1.實現使用者輸入使用者名稱和密碼,當使用者名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗 tag true while tag name input name passwd input password if name seven and passwd 123 print l...

python實現使用者答題功能

python實戰,使用者答題分享給大家。主要包含內容,檔案的讀取,更改,儲存。不同資料夾引入模組。輸入,輸出操作。隨機獲取資料操作 隨機生成算數表示式,使用者輸入答案,正確記錄分數,錯誤返回0,並把使用者分數記錄到文字檔案中,如使用者名稱不存在著新建使用者 mypythonfunction.py包含...

實現用python刷王者榮耀金幣

刷冒險最後一關,需要滿符文 需要安裝adb,可以網上查閱怎麼安裝 將adb路徑加入環境變數 coding utf 8 created on wed feb 20 13 48 11 2019 qq區 趙雲,魯班,扁鵲 author 鄧磊 from subprocess import run impor...