python实现TCP文件接收发送

本文实例为大家分享了python实现TCP文件接收发送的具体代码,供大家参考,具体内容如下

下一篇分享:udp收发的实现

先运行服务器端打开接收,在运行客服端发送文件

还有记得改一下ip哟

1、发送

根据自己需求修改,简单局域网下完成文件收发

客户端

# 由客户端向服务器传数据,文件

import socket
import tqdm
import os

def send(filename):
    # 传输数据间隔符
    SEPARATOR = '<SEPARATOR>'
    # 服务器信息
    host = '127.0.0.1'
    port =1234
    # 文件缓冲区
    Buffersize = 4096*10
    # 传输文件名字
    filename = filename
    # 文件大小
    file_size  = os.path.getsize(filename)
    # 创建socket链接
    s = socket.socket()
    print(f'服务器连接中{host}:{port}')
    s.connect((host, port))
    print('与服务器连接成功')

    # 发送文件名字和文件大小,必须进行编码处理
    s.send(f'{filename}{SEPARATOR}{file_size}'.encode())

    # 文件传输
    progress = tqdm.tqdm(range(file_size), f'发送{filename}', unit='B', unit_divisor=1024)

    with open(filename,'rb') as f :
        # 读取文件
        for _ in progress:
            bytes_read = f.read(Buffersize)
            if not bytes_read:
                break
            # sendall 确保网络忙碌的时候,数据仍然可以传输
            s.sendall(bytes_read)
            progress.update(len(bytes_read))
    # 关闭资源
    s.close()

if __name__ == '__main__':
    filename = input('请输入文件名:')
    send(filename)

2、接收

服务器端

import socket
import tqdm
import os
import threading

def received():
    # 设置服务器的ip和 port
    # 服务器信息
    sever_host = '127.0.0.1'
    sever_port =1234
    # 传输数据间隔符
    SEPARATOR = '<SEPARATOR>'

    # 文件缓冲区
    Buffersize = 4096*10
    s = socket.socket()
    s.bind((sever_host, sever_port))

    # 设置监听数
    s.listen(128)
    print(f'服务器监听{sever_host}:{sever_port}')

    # 接收客户端连接
    client_socket, address = s.accept()
    # 打印客户端ip
    print(f'客户端{address}连接')

    # 接收客户端信息
    received = client_socket.recv(Buffersize).decode()
    filename ,file_size = received.split(SEPARATOR)
    # 获取文件的名字,大小
    filename = os.path.basename(filename)
    file_size = int(file_size)

    # 文件接收处理
    progress = tqdm.tqdm(range(file_size), f'接收{filename}', unit='B', unit_divisor=1024, unit_scale=True)

    with open('8_18_'+filename,'wb') as f:
        for _ in progress:

            # 从客户端读取数据
            bytes_read = client_socket.recv(Buffersize)
            # 如果没有数据传输内容
            if not bytes_read:
                break
            # 读取写入
            f.write(bytes_read)
            # 更新进度条
            progress.update(len(bytes_read))

    # 关闭资源
    client_socket.close()
    s.close()

if __name__ == '__main__':
    received()

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

(0)

相关推荐

  • python实现定时压缩指定文件夹发送邮件

    工作中每天需要收集部门内的FR文件,发送给外部部门的同事帮忙上传,这么发了有大半年,昨天亮光一闪,为什么不做成自动化呢,于是用python实现了整个流程,今天体验了一下真是美滋滋. 代码如下 首先导入需要的包 import win32com.client as win32 import datetime import os import zipfile 定义三个函数,都是网上抄别的同学作业来的(侵删) 邮箱用的是outlook #压缩文件夹函数 def zip_ya(startdir,file_

  • python实现文件+参数发送request的实例代码

    需求: 该接口,含两个参数,一个是file,一个是paperName.其中file为上传的文件.content-type为form-data. 根据python中的request源代码,可知,发送一个request,可以传递的参数有很多.而我们这次主要用到的就是files,当然method.url.headers.及data/json也是每次发送request必备的. 主要的实现方式: # 用二进制的方式打开需上传的文件. f = open(filename, "rb") file =

  • Python实现监控Nginx配置文件的不同并发送邮件报警功能示例

    本文实例讲述了Python实现监控Nginx配置文件的不同并发送邮件报警功能.分享给大家供大家参考,具体如下: 因为项目中经常涉及到多个Nginx之间的配置文件更改,可能回导致最后Nginx之间的配置文件有所不同,这样会对项目产生影响,最典型的就是可能当访问域名解析到其中一台Nginx的时候,可能是正常的,当域名解析到另外一台Nginx的时候,由于配置文件的不同,导致访问出错之类的,影响体验,所以用python写了一个监控配置文件不同的脚本,如果发现不同,就报警,并且以HTML的形式发送邮件指出

  • python 通过 socket 发送文件的实例代码

    目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = r'D:\Python\python_learning\gd\code\part3\02网络编程\文件传输\client\download' gd_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) gd_client.connect((

  • python实现requests发送/上传多个文件的示例

    1.需要的环境 Python2.X Requests 库 2.单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: url = "http://httpbin.org/post" data = None files = { ... } r = requests.post(url, data, files=files) 而这个files参数是可以接受很多种形式的数据,最基本的2种形式为: 字典类型 元组列表

  • python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件

    本文实例讲述python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件的方法,该程序采用python 2.7编写.主要内容如下: 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需重复制造轮子. PCOMM Lite 1.6适用于win7等系统,做为dll文件可以采用任何支持调用dll的编程语言例如VC++.VB.Qt等等编写应用程序,点此本站下载 以下是发送

  • python后端接收前端回传的文件方法

    如下所示: filename=None     if request.method == 'POST' and request.FILES.get('file'):         from django.core.files.storage import FileSystemStorage         myfile = request.FILES['file']         fs = FileSystemStorage()         filename = fs.save(myfi

  • python实现TCP文件接收发送

    本文实例为大家分享了python实现TCP文件接收发送的具体代码,供大家参考,具体内容如下 下一篇分享:udp收发的实现 先运行服务器端打开接收,在运行客服端发送文件 还有记得改一下ip哟 1.发送 根据自己需求修改,简单局域网下完成文件收发 客户端 # 由客户端向服务器传数据,文件 import socket import tqdm import os def send(filename): # 传输数据间隔符 SEPARATOR = '<SEPARATOR>' # 服务器信息 host =

  • python实现TCP文件传输

    前几天已经讲过了UDP协议下大文件传输的python实现代码,今天再实现TCP协议下大文件传输的python实现代码. TCP和UDP的实现过程还是比较不一样的. 实现代码: 服务端: import socket import time s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',9999)) s.listen(5) print('Waiting for connection...') whil

  • python使用tcp实现局域网内文件传输

    本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下 功能: 可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件. 实现需求: 安装socket模块 简单了解sokcet模块用法 服务器代码如下: import socket def file_deal(file_name): # 定义函数用于处理用户索要下载的文件 try: # 二进制方式读取 files = open(file_name, "rb") mes = f

  • Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】

    本文实例讲述了Python 网络编程之UDP发送接收数据功能.分享给大家供大家参考,具体如下: demo.py(UDP发送数据): import socket # 导入socket模块 def main(): # 创建一个udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本机ip和端口号 (发送数据时,如果不绑定,系统会随机分配端口号.接收数据时,一般需要手动绑定ip和端口) udp_socket.b

  • Python udp网络程序实现发送、接收数据功能示例

    本文实例讲述了Python udp网络程序实现发送.接收数据功能.分享给大家供大家参考,具体如下: 1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8 from socket import * # 1. 创建udp套接字 udp_socket = socket(AF_INET, SOCK_DGRAM) # 2. 准备接收方的地址 # '192.168.1.103'表示目的ip

  • python通过get,post方式发送http请求和接收http响应的方法

    本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法.分享给大家供大家参考.具体如下: 测试用CGI,名字为test.py,放在apache的cgi-bin目录下: #!/usr/bin/python import cgi def main(): print "Content-type: text/html\n" form = cgi.FieldStorage() if form.has_key("ServiceCode") a

  • python通过tcp发送xml报文的方法

    如下所示: # -*- coding: utf-8 -*- import socket # 使用tcp发送请求报文 def tcpsend(ip, port, xmlbw): address = (ip, port) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(address) by = xmlbw.encode('utf8') # 转为字节数组 # print by client.send(

  • Python简单实现socket信息发送与监听功能示例

    本文实例讲述了Python简单实现socket信息发送与监听功能.分享给大家供大家参考,具体如下: 最近在研究boost C++库,用于工作中处理大规模高并发TCP连接数据响应,想测试,也可以用boost::asio库来写,但不利于测试代码的灵活修改. 于是就研究了一下python怎么做.学习过程中看到网上给出的代码示例虽然很基础易懂,对于python零基础的人来说,完全可以稍微复杂些,配上一些注释,就能更多掌握一些socket和python的基本语法知识. 于是根据我的使用需要,修改pytho

  • Python读取Pickle文件信息并计算与当前时间间隔的方法分析

    本文实例讲述了Python读取Pickle文件信息并计算与当前时间间隔的方法.分享给大家供大家参考,具体如下: python-–读取Pickle文件信息计算出与当前的时间间隔 生成h_dic.pkl文件信息 root@kali:~/python/snmp# cat snmpserver.py #!/usr/bin/python # --*-- coding:utf-8 --*-- import datetime#导入时间戳 import SocketServer import pickle pf

随机推荐