導航:首頁 > 文件教程 > pythonsocket傳輸文件

pythonsocket傳輸文件

發布時間:2023-05-15 13:09:19

⑴ 為什麼python socket文件傳輸後的文件打不開

python有三種方法解析XML,分別是SAX,DOM,以及ElementTree: SAX用事件驅動模型,通過在解析XML的過程中

⑵ python中,如何將一個指定的文件發送到對方主機的指定埠呢(用socket方式) 新手求指教!

#發送端
#-*-coding:utf-8-*-
importTkinter
importtkFileDialog
fromsocketimport*
importstruct
importos

defclient(filename):
Addr=('127.0.0.1',8000)
BUFSIZE=2048
Sendsocket=socket(AF_INET,SOCK_STREAM)
Sendsocket.connect(Addr)

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

Sendsocket.send(FileHead)

fp=open(filename,'rb')

while1:
FileData=fp.read(BUFSIZE)
ifnotFileData:
break
Sendsocket.send(FileData)

fp.close()
Sendsocket.close()

defFileOpen():
r=tkFileDialog.askopenfilename(title='PythonTkinter',
filetypes=[('Allfiles','*')])
filename=r.split('/')
client(filename[-1])

root=Tkinter.Tk()
button1=Tkinter.Button(root,text='FileOpen',height=8,width=14,bg='blue',
command=FileOpen)
button1.pack()

root.mainloop()#接收端
#-*-coding:utf-8-*-
fromsocketimport*
importos
importstruct


Addr=('127.0.0.1',8000)
BUFSIZE=1024
FileInfoSize=struct.calcsize('128s32sI8s')

SocketRecv=socket(AF_INET,SOCK_STREAM)
SocketRecv.bind(Addr)
SocketRecv.listen(5)

print"waitting........"
conn,addr=SocketRecv.accept()
print"sendfrom",addrFileHead=conn.recv(FileInfoSize)
filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',FileHead)
printfilename,len(filename),type(filename)
printfilesize

filename='new_'+filename.strip('0')
fp=open(filename,'wb')
restsize=filesize

while1:
ifrestsize<BUFSIZE:
filedata=conn.recv(restsize)
else:
filedata=conn.recv(BUFSIZE)
ifnotfiledata:
break
fp.write(filedata)
restsize=restsize-len(filedata)
ifrestsize==0:break
fp.close()

conn.close()
SocketRecv.close()

print'Finished!!!'

⑶ python如何使用socket來傳輸對象

importsocket
importstruct

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(('localhost',10000))

values=(1,'ab',2.7)
packer=struct.Struct('I2sf')
packed_data=packer.pack(*values)

try:
sock.sendall(packed_data)
finally:
sock.close()

有個模塊叫struct,可以自定義結構體,可以這樣發送代碼

try:
importcPickleaspickle
except:
importpickle

classAA():
defa(self):
print"123"

ddd=AA()
data=pickle.mps(ddd)

還有個模塊叫pickle,可以打包任何python對象,打包的結果也可以拿到套接字里發。

閱讀全文

與pythonsocket傳輸文件相關的資料

熱點內容
PP助手怎麼樣可以下載蘋果軟體嘛 瀏覽:172
macxip文件 瀏覽:190
手機是大眾化的通訊工具 瀏覽:95
linux查看mysql密碼 瀏覽:456
win10卡的文件看不到 瀏覽:375
什麼數據能反映中等水平 瀏覽:704
胎兒b超數據長和寬是哪個 瀏覽:522
女裝批發哪個網站好 瀏覽:345
金士頓有系統遷移工具 瀏覽:86
方維購物分享系統二次開發教程 瀏覽:83
方舟生存進化最新代碼 瀏覽:966
學而思網校編程怎麼下載 瀏覽:699
民法典涉信息網路貸款有哪些 瀏覽:391
投標文件中的增值稅抵扣憑證有哪些 瀏覽:403
三星g1600有沒有升級 瀏覽:82
怎麼搜索文件名帶括弧 瀏覽:739
眾包app怎麼下載 瀏覽:854
文件夾受控訪問軟體 瀏覽:756
java框架設計書籍 瀏覽:921
擴展linux文件系統方法 瀏覽:655

友情鏈接