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 BeautifulSoup设置页面编码的方法
Apr 03 Python
使用Python中的cookielib模拟登录网站
Apr 09 Python
Python的Flask框架中web表单的教程
Apr 20 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
python中数据库like模糊查询方式
Mar 02 Python
python实现图片横向和纵向拼接
Mar 05 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
python面向对象版学生信息管理系统
Jun 24 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
php数组添加元素方法小结
2014/12/20 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jquery自适应布局的简单实例
2016/05/28 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
Python实现将xml导入至excel
2015/11/20 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
Python Pillow Image Invert
2019/01/22 Python
用Python逐行分析文件方法
2019/01/28 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
电气自动化个人求职信范文
2014/02/03 职场文书
爱晚亭导游词
2015/02/09 职场文书
生日宴会祝酒词
2015/08/10 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android