<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

本文涉及的产品
转发路由器TR,750小时连接 100GB跨地域
简介: python传输文件最重要的有两步:1).将要传输的文件的信息发送过去,包括文件包,大小以及其它信息;2).发送端读取文件内容并发送过去,接受端将缓存里面的内容写入文件.

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 "连接已关闭..."

 

该程序经过实际测试可用,大家经过修改相应代码即可在本地进行测试使用。

友情提示:

用于传送比较大的文件时会比较慢,还可能照成命令行假死的情况...

目录
相关文章
|
Web App开发 新零售 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.尽可能地了解需求,系统层面适用开闭原则 2.模块化,低耦合,能快速响应变化,也可以避免一个子系统的问题波及整个大系统 3.
751 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
服务端需在vm arguments一栏下加上    -agentlib:jdwp=transport=dt_socket,server=y,address=8000 并以run模式启动 如果以debug模式启动服务端...
723 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
service cloudera-scm-agent stop service cloudera-scm-agent stop umount /var/run/cloudera-scm-agent/process umo...
760 0
|
Web App开发 前端开发
|
Web App开发 前端开发 Linux
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
[root@hadoop058 ~]# mii-tool eth0: negotiated 100baseTx-FD, link ok 100M linux 下查看网卡工作速率 Ethtool是用于查询及设置网卡参数的命令。
648 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
生产服务器环境最小化安装后 Centos 6.5优化配置备忘 本文 centos 6.5 优化 的项有18处,列表如下: 1、centos6.
1545 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
在统计分析系统中, 维度:指人们分析事物的角度。比如,分析活跃用户,可以从时间的维度,也可以从地域的维度去看,也可以时间、地域两个维度组合去分析。
667 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一个典型的星型模式包括一个大型的事实表和一组逻辑上围绕这个事实表的维度表。  事实表是星型模型的核心,事实表由主键和度量数据两部分组成。
542 0

热门文章

最新文章

下一篇
无影云桌面