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


Posted in Python onMarch 20, 2020

本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下

功能:

可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件。

实现需求:

安装socket模块
简单了解sokcet模块用法

服务器代码如下:

import socket

def file_deal(file_name):
 # 定义函数用于处理用户索要下载的文件
 try:
 # 二进制方式读取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("没有该文件")

 else:

 files.close()

 return mes

def main():
 # 创建套接字
 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 # 固定端口号
 tcp_socket.bind(("",8888))
 # 将主动套接字转为被动套接字
 tcp_socket.listen(128)

 while True:
 # 利用accept获取分套接字以及客户端的地址
 client_socket,client_addr = tcp_socket.accept()
 # 接收客户端的数据
 file_name = client_socket.recv(4096)
 # 调用函数处理用户下载的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不为空发送

  client_socket.send(mes)
 #关闭分套接字

 client_socket.close()

if __name__ == "__main__":
 main()

import socket


def file_deal(file_name):
 # 定义函数用于处理用户索要下载的文件
 try:
 # 二进制方式读取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("没有该文件")

 else:

 files.close()

 return mes

def main():
 # 创建套接字
 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 # 固定端口号
 tcp_socket.bind(("",8888))
 # 将主动套接字转为被动套接字
 tcp_socket.listen(128)

 while True:
 # 利用accept获取分套接字以及客户端的地址
 client_socket,client_addr = tcp_socket.accept()
 # 接收客户端的数据
 file_name = client_socket.recv(4096)
 # 调用函数处理用户下载的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不为空发送

  client_socket.send(mes)
 #关闭分套接字

 client_socket.close()


if __name__ == "__main__":
 main()

客户端代码:

from socket import *
import os

def main():
 # 建立套接字
 tcp_socket = socket(AF_INET, SOCK_STREAM)
 # 接收用输入的服务器端的ip和端口
 tcp_ip = input("请输入ip:")

 tcp_port = int(input("请输入端口:"))
 # 连接服务器
 tcp_socket.connect((tcp_ip, tcp_port))
 # 输入要下载的文件名
 file_name = input("请输入要下载的文件名:")

 # 将文件名发送至服务器端
 tcp_socket.send(file_name.encode())
 # 创建一个空文件
 new_file = open(file_name, "wb")
 # 用与计算读取的字节数
 time = 0

 while True:
 # 接收服务器端返回的内容
 mes = tcp_socket.recv(4096)
 # 如果内容不为空执行
 if mes:
  # 解码并向文件内写入
  new_file.write(mes.decode())

  # 计算字节
  time += len(mes)

 else:
  # 如果字节数为空即未收到内容
  if time == 0:
  # 关闭文件
  new_file.close()
  # 删除刚刚创建的文件
  os.remove(file_name)
  print("没有您要下载的文件")
  else:
  # 如过time有值时name文件传输完成
  print("文件下载成功")

  break
 # 关闭套接字
 tcp_socket.close()


if __name__ == '__main__':
main()

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

Python 相关文章推荐
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python实现八大排序算法
Aug 13 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Python实现购物车程序
Apr 16 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python docx库用法示例分析
Feb 16 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
Python接口测试get请求过程详解
Feb 28 Python
python实现快递价格查询系统
Mar 03 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
基于python3实现socket文件传输和校验
Jul 28 #Python
python多进程实现文件下载传输功能
Jul 28 #Python
python如何生成网页验证码
Jul 28 #Python
python3利用tcp实现文件夹远程传输
Jul 28 #Python
python使用tornado实现简单爬虫
Jul 28 #Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 #Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 #Python
You might like
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JS表的模拟方法
2015/02/05 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
特教教师先进事迹
2014/05/21 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
房屋租房协议书范本
2014/12/04 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers