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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
深入了解Python数据类型之列表
Jun 24 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
Django配置文件代码说明
Dec 04 Python
如何用Python 加密文件
Sep 10 Python
通过实例解析python subprocess模块原理及用法
Oct 10 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/06/13 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
详解PHP中的PDO类
2015/07/06 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
jquery设置控件位置的方法
2013/08/21 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
Python模块的加载讲解
2019/01/15 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Python整数对象实现原理详解
2019/07/01 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
雅虎笔试题(字符串操作)
2015/03/24 面试题
DataReader和DataSet的异同
2014/12/31 面试题
小学清明节活动总结
2014/07/04 职场文书
学校教学工作总结2015
2015/05/19 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
大学副班长竞选稿
2015/11/21 职场文书