python文件传输socket_python socket文件传输

该博客展示了如何使用Python实现文件的客户端发送和服务器接收功能。客户端通过socket库连接到本地服务器,发送文件头信息及文件内容。服务器端接收文件头并保存文件。主要涉及的技术包括socket编程、文件操作和数据打包。
摘要由CSDN通过智能技术生成

发送端: #!/usr/bin/python2.7 #coding=utf-8 import Tkinter import tkFileDialog from socket import * import struct import os def client(filename): Addr=('127.0.0.1',8000) BUFSIZE=1024 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') while 1: FileData=fp.read(BUFSIZE) if not FileData: break Sendsocket.send(FileData) fp.close() Sendsocket.close() def FileOpen(): r = tkFileDialog.askopenfilename(title = 'Python Tkinter', filetypes=[('All files', '*')] ) filename=r.split('/') client(filename[-1]) root = Tkinter.Tk() button1 = Tkinter.Button(root, text = 'File Open', height=8,width=14,bg='blue', command = FileOpen) button1.pack() root.mainloop() 服务器端 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- from socket import * import os import struct 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 "send from" ,addr FileHead=conn.recv(FileInfoSize) filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',FileHead) print filename,len(filename),type(filename) print filesize filename='new_'+filename.strip('\00') fp = open(filename,'wb') restsize=filesize while 1: if restsize

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值