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 logging
Apr 15 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
如何使用Python 打印各种三角形
Jun 28 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 Python
python 基于opencv去除图片阴影
Jan 26 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
第五节--克隆
2006/11/16 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
对python字典过滤条件的实例详解
2019/01/22 Python
python实现最小二乘法线性拟合
2019/07/19 Python
简单了解python协程的相关知识
2019/08/31 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
自主实习接收函
2014/01/13 职场文书
上班迟到检讨书
2014/09/15 职场文书
2014年学前班工作总结
2014/12/08 职场文书
运动会开幕词
2015/01/28 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
导游词之昭君岛
2020/01/17 职场文书
python实现网络五子棋
2021/04/11 Python
Django实现聊天机器人
2021/05/31 Python
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL