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找出最小的K个数实例代码
Jan 04 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python 常用的基础函数
Jul 10 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
python列表返回重复数据的下标
Feb 10 Python
Python Django搭建网站流程图解
Jun 13 Python
用 python 进行微信好友信息分析
Nov 28 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python经典五人分鱼实例讲解
Jan 04 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
Python合并pdf文件的工具
Jul 01 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 Cookie的使用教程详解
2013/06/03 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
对python字典过滤条件的实例详解
2019/01/22 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
详解Python多线程下的list
2020/07/03 Python
销售岗位职责范本
2014/06/12 职场文书
学校会议通知范文
2015/04/15 职场文书
干部培训工作总结2015
2015/05/25 职场文书
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript