返回顶部
首页 > 资讯 > 后端开发 > Python >python:socket传输大文件示例
  • 553
分享到

python:socket传输大文件示例

示例大文件python 2022-06-04 18:06:44 553人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

文件可以传输,但是对比传输前后的文件:Socket_test.txt,末尾有一些不一致服务端代码: #!/usr/bin/python # -*- coding: utf-8 -*- import sy

文件可以传输,但是对比传输前后的文件:Socket_test.txt,末尾有一些不一致服务端代码:


#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import time
'''
等待连接
等待发送文件
读取数据
写入文件并且保存
等待连接
'''
import socket
import threading
import time
import struct


def function(newsock, address):
  FILEINFO_SIZE = struct.calcsize('128sI')
  '''定义文件信息(包含文件名和文件大小)大小。128s代表128个char[](文件名),I代表一个integer or long(文件大小)'''
  while 1:
    try:
      fhead = newsock.recv(FILEINFO_SIZE)
      filename, filesize = struct.unpack('128sI', fhead)
      '''把接收到的数据库进行解包,按照打包规则128sI'''
      print "address is: ", address
      print filename, len(filename), type(filename)
      print filesize
      #filename = 'new_'+filename.strip('0') # 命名新文件new_传送的文件
      filename = filename.strip('0')
      fp = open(filename, 'wb') # 新建文件,并且准备写入
      restsize = filesize
      print "recving..."
      while 1:
        if restsize > 102400: # 如果剩余数据包大于1024,就去1024的数据包
          filedata = newsock.recv(10240)
        else:
          filedata = newsock.recv(restsize)
          fp.write(filedata)
          #break
        if not filedata:
          break
        fp.write(filedata)
        restsize = restsize - len(filedata) # 计算剩余数据包大小
        if restsize <= 0:
          break
      fp.close()
      print "recv succeeded !!File named:", filename
    except Exception, e:
      print unicode(e).encode('gbk')
      print "the socket partner maybe closed"
      newsock.close()
      break
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp连接
sock.bind(('10.240.146.82', 8887)) # 定于端口和ip
sock.listen(5) # 监听
while True:
  newsock, address = sock.accept()
  print "accept another connection"
  tmpThread = threading.Thread(target=function, args=(newsock, address)) # 如果接收到文件,创建线程
  tmpThread.start() # 执行线程
print 'end'

客户端代码:


#!/usr/bin/Python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
'''
输入文件名,并且上传
'''
import socket
import time
import struct
import os
f = open('socket_test.txt', 'wb')

for i in range(1000000):
  f.write('for socket test, the line number is : ' + str(i) + 'n')

f.close()

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(50)
e = 0
try:
  sock.connect(('10.240.146.82', 8887))
  print 'connect...'
except socket.timeout, e:
  print 'timeout', e
except socket.error, e:
  print 'error', e
except e:
  print 'any', e
if not e:
  #while (1):
    #filename = raw_input('input your filename------->') # 输入文件名
  filename = 'socket_test.txt'
  FILEINFO_SIZE = struct.calcsize('128sI') # 编码格式大小
  fhead = struct.pack('128sI', filename, os.stat(filename).st_size) # 按照规则进行打包
  sock.send(fhead) # 发送文件基本信息数据
  fp = open(filename, 'rb')
  fp2 = open('local_test.txt','wb')
  i = 0
  while 1: # 发送文件
    filedata = fp.read(10240)
    if not filedata:
      break
    sock.sendall(filedata)
    fp2.write(filedata)
    print i
    i = i + 1
  print "sending over..."
  fp.close()
  fp2.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: python:socket传输大文件示例

本文链接: https://lsjlt.com/news/13786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python:socket传输大文件示例
    文件可以传输,但是对比传输前后的文件:socket_test.txt,末尾有一些不一致服务端代码: #!/usr/bin/python # -*- coding: utf-8 -*- import sy...
    99+
    2022-06-04
    示例 大文件 python
  • Python Socket传输文件示例
    发送端可以不停的发送新文件,接收端可以不停的接收新文件。 例如:发送端输入:e:visio.rar,接收端会默认保存为 e:new_visio.rar,支持多并发,具体实现如下; 接收端: 方法一: ...
    99+
    2022-06-04
    示例 传输文件 Python
  • Java读取传输FTP文件实现示例
    目录一.需求二.依赖三.关键源码3.0 配置信息3.1 获取客户端3.2 获取ftp文件3.3 关闭ftp服务连接四.总结参考资料一.需求 FTP作为文件服务器,由提供服务方提供远程...
    99+
    2023-05-18
    Java读取传输FTP文件 Java读取FTP文件
  • C# TcpClient网络编程传输文件的示例
    目录一、简述二、内容一、简述   利用C# TcpClient在局域网内传输文件,可是文件发送到对面的时候却要重新命名文件的。那可不可以连着文件名与文件一起发过去呢? 二、内容 ...
    99+
    2024-04-02
  • Android中Socket大文件断点上传示例
    什么是Socket?      所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信连的句柄,...
    99+
    2022-06-06
    示例 断点 socket Android
  • vue+springboot上传大文件的实现示例
    目录前言逻辑前端后端RedisTemplate配置结语前言 众所周知,上传大文件是一件很麻烦的事情,假如一条路走到黑,直接一次性把文件上传上去,对于小文件是可以这样做,但是对于大文件...
    99+
    2023-05-17
    vue springboot上传大文件 vue springboot上传文件
  • Linux中如何传输超大文件
    这篇文章主要介绍了Linux中如何传输超大文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文研究的主要内容是Linux下如何传输超大文件,具体如下。linux下的文件传输...
    99+
    2023-06-10
  • golang如何实现大文件传输
    在 Golang 中,可以使用 io 和 os 包来实现大文件的传输。以下是一种可能的实现方式: 首先,需要创建一个服务器端和一个客...
    99+
    2023-10-21
    golang
  • golang怎么实现大文件传输
    在Golang中可以使用io和net包来实现大文件的传输。下面是一个简单的示例代码,演示了如何将一个大文件分块传输。 package...
    99+
    2024-02-29
    golang
  • Java使用Socket通信传输文件的方法示例
    本文实例讲述了Java使用Socket通信传输文件的方法。分享给大家供大家参考,具体如下:前面几篇文章介绍了使用Java的Socket编程和NIO包在Socket中的应用,这篇文章说说怎样利用Socket编程来实现简单的文件传输。这里由于前...
    99+
    2023-05-31
    java socket ava
  • 镭速传输:TB级大文件传输,一招教你搞定
    当文件散布在各个地方时,收集文件就变成了一项非常昂贵且繁复的操作。操作系统通常会在本地存储中保留文件的属性数据缓存,在后台连续索引本地存储中的文件,并使用可以在需要时快速访问的值来使高速缓存保持最新状态。但是在当今的网络存储、对象存储(本地...
    99+
    2023-06-04
  • nodejs怎么实现http传输大文件
    这篇文章主要介绍“nodejs怎么实现http传输大文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么实现http传输大文件”文章能帮助大家解决问题...
    99+
    2024-04-02
  • 怎么使用java socket传输大文件
    要使用Java Socket传输大文件,可以使用以下步骤:1. 创建一个ServerSocket对象来监听某个端口号,等待客户端连接...
    99+
    2023-09-23
    java
  • 两个电脑怎么传输大文件
    有多种方法可以传输大文件,以下是其中几种常见的方法:1. 使用USB存储设备:将大文件保存在一个USB闪存盘或移动硬盘中,然后将其插...
    99+
    2023-09-08
    电脑
  • Vue+NodeJS实现大文件上传的示例代码
    目录整体思路项目演示前端界面文件切片hash计算查询切片状态切片上传(断点续传)文件总体上传进度合并文件优化请求并发数控制hash值计算优化常见的文件上传方式可能就是new一个For...
    99+
    2024-04-02
  • Node.js实现大文件断点续传示例详解
    目录前言方案分析具体解决流程html 部分script 部分node服务端 部分逻辑分析小结前言 平常业务需求:上传图片、Excel等,毕竟几M的大小可以很快就上传到服务器。 针对于...
    99+
    2022-11-13
    Node.js大文件断点续传 Node.js 文件断点续传
  • Xshell传输文件
    Xshell传输文件 一、通过sftp 命令二、xftp三、rz上传 和 sz 下载 上传路径:介绍我们需要向Linux系统里面传东西。 下载路径:就是我们把Linux系统里面...
    99+
    2023-10-26
    服务器 网络 linux
  • golang怎么实现大文件传输功能
    在Go语言中,可以使用`io.Copy()`函数来实现大文件传输功能。`io.Copy()`函数会从源文件(例如,一个`io.Rea...
    99+
    2023-10-27
    golang
  • 怎么从云服务器传输大文件
    怎么从云服务器传输大文件?如今,在云计算和大数据时代,传输大文件已经成为了一个普遍的需求。无论是企业还是个人用户,都需要在云服务器之间进行高效且安全的大文件传输。下面将简要介绍一些从云服务器传输大文件的方法和注意事项。 一、我们可以使用传...
    99+
    2024-01-23
    云服务器传输大文件 怎么从云服务器传输大文件 云服务器知识
  • el-upload大文件切片上传实现示例详解
    目录背景htmljs备注背景 前端上传大文件时,会出现跨域错误等各类错误,另切片上传可以提高上传效率。固进行以下代码记录,方便后期cv() html <el-upload a...
    99+
    2023-03-15
    el upload大文件切片上传 el upload文件上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作