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正则表达式
Jan 15 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
对Python实现累加函数的方法详解
Jan 23 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
python爬虫 requests-html的使用
Nov 30 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
Js apply方法详解
2017/02/16 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
python线程池的实现实例
2013/11/18 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
什么是命名空间(NameSpace)
2015/11/24 面试题
节约用水演讲稿
2014/05/21 职场文书
学校清明节活动总结
2014/07/04 职场文书
天猫活动策划方案
2014/08/21 职场文书
青年教师个人总结
2015/02/11 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
小学运动会开幕词
2016/03/04 职场文书
导游词之无锡梅园
2019/11/28 职场文书
python文件目录操作之os模块
2021/05/08 Python