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写的图片蜘蛛人代码
Aug 27 Python
Python functools模块学习总结
May 09 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python二进制文件的转译详解
Jul 03 Python
python word转pdf代码实例
Aug 16 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
Python中的特殊方法以及应用详解
Sep 20 Python
python实现商品进销存管理系统
May 30 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 开发工具
2006/12/06 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
Ajax基础知识详解
2017/02/17 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
Python Trie树实现字典排序
2014/03/28 Python
跟老齐学Python之for循环语句
2014/10/02 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
土建工程师岗位职责
2014/06/10 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL