发送端: #!/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
python文件传输socket_python socket文件传输
最新推荐文章于 2023-12-28 16:20:43 发布
该博客展示了如何使用Python实现文件的客户端发送和服务器接收功能。客户端通过socket库连接到本地服务器,发送文件头信息及文件内容。服务器端接收文件头并保存文件。主要涉及的技术包括socket编程、文件操作和数据打包。
摘要由CSDN通过智能技术生成