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 网络编程起步(Socket发送消息)
Sep 06 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
Python中is与==判断的区别
Mar 28 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
用Python写一段用户登录的程序代码
Apr 22 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 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/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
学习php笔记 字符串处理
2010/10/19 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
python读取二进制mnist实例详解
2017/05/31 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Python 存取npy格式数据实例
2020/07/01 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
公司2014年度工作总结
2014/12/10 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
干部培训简讯
2015/07/20 职场文书
2016年寒假见闻
2015/10/10 职场文书
如何书写授权委托书?
2019/06/25 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
HttpClient实现文件上传功能
2022/08/14 Java/Android