python实现文件传输

发送者:
send_file.py

def send_file(filename: str = "mytext.txt", testing: bool = False) -> None:import socketport = 12312  # Reserve a port for your service.sock = socket.socket()  # Create a socket objecthost = socket.gethostname()  # Get local machine namesock.bind((host, port))  # Bind to the portsock.listen(5)  # Now wait for client connection.print("Server listening....")while True:conn, addr = sock.accept()  # Establish connection with client.print(f"Got connection from {addr}")data = conn.recv(1024)print(f"Server received: {data }")with open(filename, "rb") as in_file:data = in_file.read(1024)while data:conn.send(data)print(f"Sent {data!r}")data = in_file.read(1024)print("Done sending")conn.close()if testing:  # Allow the test to completebreaksock.shutdown(1)sock.close()if __name__ == "__main__":send_file()

启动python文件:
出现:
servering listening

received_file.py

if __name__ == "__main__":import socket  # Import socket modulesock = socket.socket()  # Create a socket objecthost = socket.gethostname()  # Get local machine nameport = 12312sock.connect((host, port))sock.send(b"Hello server!")with open("Received_file", "wb") as out_file:print("File opened")print("Receiving data...")while True:data = sock.recv(1024)print(f"{data }")if not data:breakout_file.write(data)  # Write data to a fileprint("Successfully got the file")sock.close()print("Connection closed")

接收者这边也启动received_file:
在这里插入图片描述

另外同时send_file也收到:
在这里插入图片描述
文件结构如下:
在这里插入图片描述
参考:

# 服务器端import socket
import os
import hashlibserver = socket.socket()server.bind(("localhost", 6969)) # 绑定监听端口server.listen(5)  # 监听print("监听开始..")while True:conn, addr = server.accept()  # 等待连接print("conn:", conn, "\naddr:", addr)  # conn连接实例while True:data = conn.recv(1024)  # 接收if not data:  # 客户端已断开print("客户端断开连接")breakprint("收到的命令:", data.decode("utf-8"))cmd, filename = data.decode("utf-8").split(" ")if cmd =="get":if os.path.isfile(filename):  # 判断文件存在# 1.先发送文件大小,让客户端准备接收size = os.stat(filename).st_size  #获取文件大小conn.send(str(size).encode("utf-8"))  # 发送数据长度print("发送的大小:", size)# 2.发送文件内容conn.recv(1024)  # 接收确认m = hashlib.md5()f = open(filename, "rb")for line in f:conn.send(line)  # 发送数据m.update(line)f.close()# 3.发送md5值进行校验md5 = m.hexdigest()conn.send(md5.encode("utf-8"))  # 发送md5值print("md5:", md5)server.close()

Python编程:socket实现文件传输

# 客户端import socket
import os
import hashlibclient = socket.socket()  # 生成socket连接对象ip_port =("localhost", 6969)  # 地址和端口号client.connect(ip_port)  # 连接print("服务器已连接")while True:content = input(">>")if len(content)==0: continue  # 如果传入空字符会阻塞if content.startswith("get"):client.send(content.encode("utf-8"))  # 传送和接收都是bytes类型# 1.先接收长度,建议8192server_response = client.recv(1024)file_size = int(server_response.decode("utf-8"))print("接收到的大小:", file_size)# 2.接收文件内容client.send("准备好接收".encode("utf-8"))  # 接收确认filename = "new" + content.split(" ")[1]f = open(filename, "wb")received_size = 0m = hashlib.md5()while received_size < file_size:size = 0  # 准确接收数据大小,解决粘包if file_size - received_size > 1024: # 多次接收size = 1024else:  # 最后一次接收完毕size = file_size - received_sizedata = client.recv(size)  # 多次接收内容,接收大数据data_len = len(data)received_size += data_lenprint("已接收:", int(received_size/file_size*100), "%")m.update(data)f.write(data)f.close()print("实际接收的大小:", received_size)  # 解码# 3.md5值校验md5_sever = client.recv(1024).decode("utf-8")md5_client = m.hexdigest()print("服务器发来的md5:", md5_sever)print("接收文件的md5:", md5_client)if md5_sever == md5_client:print("MD5值校验成功")else:print("MD5值校验失败")client.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不同于NLP,数据驱动、机器学习无法攻克NLU,原因有三

文 | Walid S. Saba源 | 机器之心自然语言理解&#xff08;NLU&#xff09;是人工智能的核心课题之一&#xff0c;也被广泛认为是最困难和最具标志性的任务。近年来&#xff0c;机器学习虽然被广泛使用&#xff0c;但是却不能很好的解决自然语言理解问题&#xff0c;其中可能涉…

分布式系统互斥性与幂等性问题的分析与解决

随着互联网信息技术的飞速发展&#xff0c;数据量不断增大&#xff0c;业务逻辑也日趋复杂&#xff0c;对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题&#xff0c;系统架构也…

开源开放 | 多模态实体链接数据集MELBench(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/melbenchGitHub地址&#xff1a;https://github.com/seukgcode/MELBench开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;东南大学&#xff08;汪鹏、周星辰、邓臻凯、李国正、谢…

LeetCode 1219. 黄金矿工(回溯)

文章目录1. 题目2. 回溯DFS解题1. 题目 你要开发一座金矿&#xff0c;地质勘测学家已经探明了这座金矿中的资源分布&#xff0c;并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量&#xff1b;如果该单元格是空的&#xff0c;那么就是…

发现一篇专门吐槽 NLP 内卷现状的 ACL 论文 ...

文 | Severus编 | 小轶随着大模型的发展&#xff0c;NLP领域的榜单可说是内卷到了无以复加&#xff0c;现在去浏览各大公开榜单&#xff0c;以至于各个比赛&#xff0c;随处可见BERT、RoBERTa的身影&#xff0c;甚至榜单中见到各大large模型的集成版也并非偶然。在发论文的时候…

大促活动前团购系统流量预算和容量评估

本文整理自美团点评技术沙龙第11期&#xff1a;移动端测试分享。 美团点评技术沙龙由美团点评技术团队主办&#xff0c;每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验&#xff0c;覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等…

论文浅尝 | 融合多层次领域知识的分子图对比学习

笔记整理 | 方尹&#xff0c;浙江大学在读博士&#xff0c;研究方向&#xff1a;图表示学习论文地址&#xff1a;https://arxiv.org/pdf/2106.04509.pdf动机目前基于图的对比学习有以下几个问题&#xff1a;不同领域的图&#xff0c;&#xff08;比如social network和分子图&am…

LeetCode 1028. 从先序遍历还原二叉树(栈)

文章目录1. 题目2. 栈解题1. 题目 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其…

python 怎么将列表中的字典安照某一个key输出到csv,python如何把字典数据存储进csv文件

示例代码 import csv fieldnames["A","B","C"]#数据列名dicts[{A: 1, B: 2, C:3},{A: 2, B: 3, C:4},{A: 3, B: 4, C:5},{A: 4, B: 5, C:6},{A: 5, B: 6, C:7},{A: 9, B: 7, C:8},]with open(test.csv, a, newline,encodingutf_8_sig) as f: wr…

基于深度学习方法的图像分割,差距不止一点点

图像分割&#xff08;image segmentation&#xff09;技术是计算机视觉领域的一个重要的研究方向&#xff0c;图像分割是计算机视觉中的一个关键过程。它包括将视觉输入分割成片段以简化图像分析。片段表示目标或目标的一部分&#xff0c;并由像素集或“超像素”组成。图像分割…

Java Hotspot G1 GC的一些关键技术

前言 G1 GC&#xff0c;全称Garbage-First Garbage Collector&#xff0c;通过-XX:UseG1GC参数来启用&#xff0c;作为体验版随着JDK 6u14版本面世&#xff0c;在JDK 7u4版本发行时被正式推出&#xff0c;相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中&#xff0c;G1被提议…

论文浅尝 | AutoETER: 用于知识图谱嵌入的自动实体类型表示

论文链接&#xff1a;https://arxiv.org/pdf/2009.12030.pdf动机传统的KGE使用附加的类型信息改善实体的表示&#xff0c;但是这些方法完全依赖于显式类型&#xff0c;或者忽略了特定于各种关系的不同类型表示&#xff0c;并且这些方法目前都不能同时推断出对称性、反演和组成的…

LeetCode 1029. 两地调度(贪心)

文章目录1. 题目2. 贪心1. 题目 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0]&#xff0c;飞往 B 市的费用为 costs[i][1]。 返回将每个人都飞到某座城市的最低费用&#xff0c;要求每个城市都有 N 人抵达。 示例&#xff1a; 输入&#xff1a;[[10,20],[30,2…

百面机器学习-第一章特征工程

原文链接&#xff1a;https://www.jianshu.com/p/355c4001ca42 前言 如果你能找到这里&#xff0c;真是我的幸运~这里是蓝白绛的学习笔记&#xff0c;本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点&#xff0c;希望对大家有帮助。…

推荐几个NLP出论文的好方向!!

如果你准备发NLP方向的论文&#xff0c;或准备从事科研工作或已在企业中担任NLP算法岗的工作。那么我真诚的向大家推荐&#xff0c;贪心学院《自然语言处理高阶研修班》&#xff0c;目前全网上应该找不到类似体系化的课程。课程精选了四大主题进行深入的剖析讲解&#xff0c;四…

Android热更新方案Robust

美团是中国最大的O2O交易平台&#xff0c;目前已拥有近6亿用户&#xff0c;合作各类商户达432万&#xff0c;订单峰值突破1150万单。美团App是平台主要的入口之一&#xff0c;O2O交易场景的复杂性决定了App稳定性要达到近乎苛刻的要求。用户到店消费买优惠券时死活下不了单&…

会议研讨 | TF45: 知识图谱新技术、新场景、新应用

基于“新基建”面向新产业、新业态和新模式的背景下&#xff0c;知识图谱作为人工智能的重要基石正在火热发展中。新的知识图谱技术在新的场景和应用中使人工智能从感知智能逐渐向认知智能过渡。知识图谱与产业的结合愈加紧密&#xff0c;除了在搜索与推荐、知识问答等通用领域…

LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)

文章目录1. 题目2. 解题1. 题目 给定一个二叉搜索树和一个目标结果&#xff0c;如果 BST 中存在两个元素且它们的和等于给定的目标结果&#xff0c;则返回 true。 案例 1: 输入: 5/ \3 6/ \ \ 2 4 7Target 9 输出: True案例 2: 输入: 5/ \3 6/ \ \ 2 4 7Tar…

盘点来自工业界的GPU共享方案

文 | 阎姝含源 | 极市平台进年来工业界一直孜孜不倦地寻求提升GPU利用率的方案&#xff0c;能被更多用户理解和使用的GPU共享走进工程师的视野中。本文将总结目前有公开PR的、来自工业界的部分GPU容器计算共享方案&#xff0c;看看工业界对GPU共享的定位和需求。本文将依旧着眼…

百面机器学习|第二章模型评估知识点 蓝白绛

前言 如果你能找到这里&#xff0c;真是我的幸运~这里是蓝白绛的学习笔记&#xff0c;本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点&#xff0c;希望对大家有帮助。 第二章 模型评估 1、评估指标的局限性 准确率(Accuracy)&…