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 相关文章推荐
Python3中的2to3转换工具使用示例
Jun 12 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python Flask框架模板操作实例分析
May 03 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
Django实现简单网页弹出警告代码
Nov 15 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
python常用运维脚本实例小结
Feb 14 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
Django开发RESTful API实现增删改查(入门级)
May 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
javascript定时保存表单数据的代码
2011/03/17 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jQuery功能函数详解
2015/02/01 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
vue实现单选和多选功能
2017/08/11 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
学校办公室主任职责
2013/12/27 职场文书
个人工作表现评语
2014/04/30 职场文书
个园导游词
2015/02/04 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python