socker_server.py:

实现功能:获取yaml中的文件信息,用soket进行文件传输(TCP+三次握手)

socker_client.py:

实现功能:利用server端传过来的文件信息做校验,并继续文件接收

properties:

为yaml文件,储存文件信息

#file:socker_server.py

#_*_coding:utf-8_*_

#by Linhut

#time:2017/4/8

import SocketServer,yaml,json

class socketHandler(SocketServer.BaseRequestHandler):

def setup(self):

print '\033[32mServer starting successful ....\033[0m'

with open('F:/cgi-bin/p2/config/properties', 'r') as f:

content = f.read() #读出来内容

self.cfg = yaml.load(content) #通过yaml变成字典

def handle(self):

conn = self.request #把客户端的soket对象收到

first_mgs = conn.recv(1024) #判断第一次握手成功,发生文件头部

if first_mgs == 'successful':

with open(self.cfg['file_matadata']['filepath'],'rb') as f: #rb打开文件

self.content = f.read()

filesize = len(self.content)

self.cfg['file_matadata']['filesize'] = filesize # raml文件赋值文件大小

ack_msg = json.dumps(self.cfg).encode()

conn.send(ack_msg) #给客户端发送信息

else:

print 'client failed...'

if conn.recv(1024) == 'start':

conn.send(self.content)

finish_msg = conn.recv(1024)

print finish_msg

def finish(self):

pass

class socketserever(SocketServer.TCPServer):

pass

class MyServer(SocketServer.TCPServer,SocketServer.ThreadingMixIn):

pass

if __name__=='__main__':

server = socketserever(('127.0.0.1',2010),socketHandler)

server.serve_forever()

#file:socker_client.py

#_*_coding:utf-8_*_

#by Linhut

#time:2017/4/8

import socket,json,sys,time

recv_file = b''

recv_size = 0

server_address = ('127.0.0.1',2010)

sock =socket.socket(socket.AF_INET,socket.SOCK_STREAM)

for i in range(5):

try:

sock.connect(server_address)

break

except Exception as e:

print 'client connection server \033[31mfailad\033[0m,please 3s retry..'

time.sleep(3)

else:

print 'client exit..'

sys.exit(10)

sock.send('successful')

ack_msg = json.loads(sock.recv(1024).decode()) #拿ack信息

print ack_msg

if ack_msg['file_matadata']:

filename = ack_msg['file_matadata']['filename']

filesize = ack_msg['file_matadata']['filesize']

name = raw_input('raw_input you locla filename:')

save_file_path = 'C:/Users/T530_I7QM/Desktop/%s.pdf'%name

sock.send('start') #告诉服务器端可以发送数据了

while recv_size < filesize:

content = sock.recv(2048)

recv_file += content

recv_size += 2048

print '[%s] recv_size:%s'%(filename,recv_size)

else:

with open(save_file_path,'ab+') as f:

f.write(recv_file)

sock.send('\033[32m client recv finished\033[0m') #完成并发生一个消息

print '\033[32m recv finished.. \033[0m'

#file:properties

ack_msg:

filename: qqq.pdf

filepath: C:/Users/T530_I7QM/Desktop/qqq.pdf

filesize:

python发送文件_Python大文件传输相关推荐

  1. python按行读取文件效率高吗_Python按行读取文件的实现方法【小文件和大文件读取】...

    本文实例讲述了Python按行读取文件的实现方法.分享给大家供大家参考,具体如下: 小文件: #coding=utf-8 #author: walker #date: 2013-12-30 #func ...

  2. Python 生成大量文件及大文件

    Python 生成大量文件及大文件 很多时候测试需要大量的文件和很大的文件,这些手动操作是非常麻烦的,现在来看看使用python自动生成 一次生成大量小文件(速度很慢) import os impor ...

  3. VC++中使用内存映射文件处理大文件

    引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...

  4. Flink重写Iceberg数据湖小文件变大文件

    1. 重写小文件变大文件 Flink支持Batch任务,将iceberg表的小文件重写成大文件 合并前HDFS的metadata和data目录文件如下: [root@flink1 ~]# [root@ ...

  5. python读取大文件的某行_Python按行读取文件的实现方法【小文件和大文件读取】...

    本文实例讲述了Python按行读取文件的实现方法.分享给大家供大家参考,具体如下: 小文件: #coding=utf-8 #author: walker #date: 2013-12-30 #func ...

  6. python读取大文件的某行_python 大文件以行为单位读取方式比对

    先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如下的文章. 该文章实际上提供了集中读取大文件的方式,先经过测试总结如下 1. for l ...

  7. python如何读取文件指定行_Python读取文件、大文件和指定行内容的几种方法

    在使用python处理文本的时候,经常会需要读取文件的内容.如果文件比较小,那么直接使用open文件对象打开文件,再通过read()方法最为方便,这种方法就是把文件内容读出来后放到内存变量. read ...

  8. python读取文件多行内容-Python读取文件、大文件和指定行内容的几种方法

    在使用python处理文本的时候,经常会需要读取文件的内容.如果文件比较小,那么直接使用open文件对象打开文件,再通过read()方法最为方便,这种方法就是把文件内容读出来后放到内存变量. read ...

  9. python批量下载网页文件-超简单超详细python小文件、大文件、批量下载教程

    按照不同的情况,python下载文件可以分为三种: 小文件下载 大文件下载 批量下载 python 小文件下载 流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放 ...

最新文章

  1. (2006, 'MySQL server has gone away') 错误解决 - dba007的空间 - 51CTO技术博客
  2. matlab gm 1 1,MATLAB 如何用GM(1,1)做预测?请大神帮忙!
  3. Android图片适应屏幕大小
  4. 用 Span 对 C# 进程中三大内存区域进行统一访问 ,太厉害了!
  5. Ocelot(六)- 架构图
  6. java连接cdh集群_有一台电脑需要通过beeline的方式连接到CDHclouderahadoop集群,提示报错。...
  7. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组
  8. 跳转类内方法快捷键_想要快速编写代码,你得熟悉这些快捷键!
  9. HTTPBrowserCapabilities---在asp.net中显示浏览器属性
  10. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
  11. winform自定义分页控件
  12. python分析每月销售数据_利用Python进行某单品销售数据分析
  13. mysql中常用的筛查语句_数据库中常用的一些关键字
  14. caffe2 mdl文件转init_net.pb, predict_net.pb
  15. 元宇宙需要“基建狂魔”
  16. 方格取数问题(网络流24题之一)
  17. 如何用Sonic云真机打王者
  18. 3U VPX接口卡学习资料第288篇:基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U VPX接口卡  数据采集IO卡  软件无线电处理平
  19. 敏捷个人2012.5月份户外活动报道:0费用京郊经典户外路线【京西古道】
  20. 【正点原子STM32连载】第十四章 蜂鸣器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

热门文章

  1. lamp源码安装之二进制MySQL5.6.25安装
  2. 在SQL SERVER 中如何备份和恢复单个表?
  3. systemd.conf翻译
  4. file_get_contents(php://input)
  5. *.sln和*.suo文件的作用
  6. Firebug Console API
  7. Linux常用正则表达式
  8. 《JavaScript设计模式》——11.3 站长统计
  9. WebX框架的页面授权
  10. 关于 class helper for ... 语法