Python网络编程之使用TCP方式传输文件操作示例


Posted in Python onNovember 01, 2019

本文实例讲述了Python网络编程之使用TCP方式传输文件操作。分享给大家供大家参考,具体如下:

TCP文件下载器

客户端

需求:输入要下载的文件名,从服务器端将文件拷贝到本地

步骤:

1.创建TCP套接字,绑定端口
2.连接服务端
3.输入要下载的文件名
4.将文件名编码,并发送到服务端
5.接收服务端返回的数据
6.关闭套接字

代码

# 导入模块
import socket
# 创建套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
tcp_client_socket.bind(("", 8080))
# 连接IP地址和端口
tcp_client_socket.connect(("192.168.43.216", 8080))
file_name = input("请输入要下载的文件:\n")
# 文件名编码
tcp_client_socket.send(file_name.encode())
try:
  # 文件传输
  with open("C:/Users/Administrator/Desktop/" + file_name, "wb") as file:
    while True:
      # 接收数据
      file_data = tcp_client_socket.recv(1024)
      # 数据长度不为0写入文件
      if file_data:
        file.write(file_data)
      # 数据长度为0表示下载完成
      else:
        break
# 下载出现异常时捕获异常
except Exception as e:
  print("下载异常", e)
# 无异常则下载成功
else:
  print(file_name, "下载成功")
# 关闭客户端
tcp_client_socket.close()

服务端

需求:接收客户端发送的文件名,将文件传输给客户端

步骤:

1.创建TCP套接字,绑定端口
2.设置监听
3.接收客户端传输的文件名信息并解码
4.将文件发送到客户端
5.关闭客户端套接字(断开连接)

代码

# 导入模块
import socket
# 创建tcp服务端socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
tcp_server_socket.bind(("", 8080))
# 设置监听,把服务端socket由主动套接字改成被动套接字,只能接收客户端的连接请求
tcp_server_socket.listen(128)
while True:
  # 接收客户端信息
  client_socket, client_ip = tcp_server_socket.accept()
  print("客户端:", client_ip, "连接")
  # 接收下载信息
  file_name_data = client_socket.recv(1024)
  # 解码下载信息
  file_name = file_name_data.decode()
  try:
    # 数据传输
    with open("/home/python/Desktop/" + file_name, "rb") as file:
      while True:
        # 读取文件数据
        file_data = file.read(1024)
        # 数据长度不为0表示还有数据没有写入
        if file_data:
          client_socket.send(file_data)
        # 数据为0表示传输完成
        else:
          print(file_name, "传输成功")
          break
  except Exception as e:
    print("传输异常:", e)
  # 关闭客户端连接
  client_socket.close()

测试

客户端请求

Python网络编程之使用TCP方式传输文件操作示例

服务器响应

Python网络编程之使用TCP方式传输文件操作示例

客户端接收

Python网络编程之使用TCP方式传输文件操作示例

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现图片拼接的代码
Jul 02 Python
Django实战之用户认证(初始配置)
Jul 16 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
python 模拟登陆163邮箱
Dec 15 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
wxpython布局的实现方法
Nov 01 #Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 #Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 #Python
python中time库的实例使用方法
Oct 31 #Python
Django实现分页显示效果
Oct 31 #Python
Django实现基于类的分页功能
Oct 31 #Python
python Django框架实现web端分页呈现数据
Oct 31 #Python
You might like
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
35个Python编程小技巧
2014/04/01 Python
python实现挑选出来100以内的质数
2015/03/24 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
对numpy中轴与维度的理解
2018/04/18 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
学生宿舍管理制度
2014/01/30 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
2015感人爱情寄语
2015/02/26 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
以下牛机,你有几个
2022/04/05 无线电