基于socket实现文件的传输以及md5验证

server:

 import socket
import os
import hashlib
server=socket.socket()
server.bind(('localhost',9090))
server.listen() while True:
print('ready to receive:')
conn,addr=server.accept() while True:
data1=conn.recv(1024)
file_name=data1.decode() if os.path.isfile(file_name):
file_size=os.path.getsize(file_name)
conn.send(str(file_size).encode())
f=open(file_name,'rb')
md=hashlib.md5() data2=conn.recv(1024) for line in f:
conn.send(line)
md.update(line) f.close()
print('发送完成...')
conn.send(md.hexdigest().encode()) else:
print('无文件') server.close()
 import socket
import os
import hashlib client=socket.socket()
client.connect(('localhost',9090)) while True:
choice=input('>>')
if len(choice)==0:continue client.send(choice.encode())
data1=client.recv(1024)
data_size=int(data1.decode())
print('data_size:',data_size) count_size=0
recv_data=b''
# if os.path.isfile(choice):
f=open(choice+'.new','wb')
client.send(b'recving')
md=b''
ma_data=hashlib.md5(md) while count_size < data_size:
data=client.recv(1024)
recv_data+=data
recv_data_size=len(data.decode())
count_size+=recv_data_size
ma_data.update(data) else:
f.write(recv_data)
print('complete')
f.close() md1=client.recv(1024).decode()
print(ma_data.hexdigest(),md1)
if ma_data.hexdigest()==md1:
print('无异常') client.close()

socket FTP-1的更多相关文章

  1. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

  2. PHP面试大全 基础篇100道问题

    2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...

  3. Aittit.attilax超级框架 api 规划大全

    Aittit.attilax超级框架 api 规划大全 1 Api分类2 1.1 核心2 1.2 属性2 1.3 CSS2 1.4 选择器2 1.5 文档处理3 1.6 筛选3 1.7 事件3 1.8 ...

  4. 用wget做站点镜像

    用wget做站点镜像 -- :: 分类: LINUX # wget -r -p -np -k http://xxx.edu.cn -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个 ...

  5. python--(socket与粘包解决方案)

    python--(socket与粘包解决方案) 一.socket: Socket 是任何一种计算机网络通讯中最基础的内容.例如当你在浏览器地址栏中输入 http://www.cnblogs.com/ ...

  6. [原创]python之socket-ftp

    今天来讲讲ftp文件下载,感觉挺有趣的,知道吧,就那种看到新文件生成,而自己写的代码也不多,那种成就感! 一.需求: 客户端发送指令给服务端,服务端根据指令找到相应文件,发送给客户端 分析: PS:e ...

  7. HTTP,FTP,TCP,UDP及SOCKET

    一.TCP/IP协议简析TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层:网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议传输层:TCP协议与UDP协议应用层:F ...

  8. 探测FTP状态,socket方式

    1.FTP返回码列表(哪里都能找到的): 120 Service ready in NNN minutes. 服务在NNN时间内可用 --------------------------------- ...

  9. 使用 Socket 通信实现 FTP 客户端程序(来自IBM)

    FTP 客户端如 FlashFXP,File Zilla 被广泛应用,原理上都是用底层的 Socket 来实现.FTP 客户端与服务器端进行数据交换必须建立两个套接字,一个作为命令通道,一个作为数据通 ...

  10. Socket网络编程--FTP客户端

    Socket网络编程--FTP客户端(1)(Windows) 已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解F ...

随机推荐

  1. [matlab] 20.图与网络 matlab自带函数使用

    matlab自带的biography(产生一个句柄) 可以用于画图 R=[1 1 2 4 1 2 3 3 5 7 3 4 5 6 7 8]; % 起始节点编号 C=[2 3 3 3 4 5 5 6 6 ...

  2. [SHOI2015]脑洞治疗仪

    嘟嘟嘟 这题其实就是一个线段树维护最大连续和的水题. 别的操作不说,操作1只要二分找区间前\(k\)个0即可. 需要注意的是,因为操作1两区间可能有交,因此要先清空再二分查询-- 复杂度\(O(n l ...

  3. P2690 接苹果(暴力搜索+记忆化)

    思路: 建树:就是在每一分钟进行分枝,是原地不动,还是移动.然后,走完整个过程. 但是,我其实还是走了弯路,因为,最开始想的是剪枝,没有用记忆化搜索.但是,肯定是能用dp来做,啊啊啊啊阿,能用dp肯定 ...

  4. 微信硬件平台(八) 3-0ESP8266向微信服务器请求设备绑定的用户

    1调试助手 请求URL: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=自己微信ID&a ...

  5. Redis入门篇(安装与启动)

    一.Redis介绍 Redis是NoSql的一种,在弄清楚Redis是个什么玩意之前,先了解下NoSql是什么.1.什么是NoSql NoSql,全名:Not Only Sql,是一种非关系型数据库, ...

  6. VS2017设置主题和代码字体

    从Visual Studio Marketplace下载主题插件 VS2017带有一个软件超市(Visual Studio Marketplace),可以和Eclipse一样从软件超市中下载各种插件, ...

  7. web路径问题相对路径和绝对路径,计算机相对路径和绝对路径

    **首先得明白相对路径和绝对路径的概念和区别:****相对路径:**相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系.使用相对路径可以为我们带来非常多的便利.([百度百科])* ...

  8. 微信小程序项目实战 - 菜谱大全

    1. 项目简介 最近研究小程序云开发,上线了一个有关菜品查询的小程序.包括搜索.分享转发.收藏.查看历史记录等功能.菜谱 API 来自聚合数据.云开发为开发者提供完整的云端支持,弱化后端和运维概念,无 ...

  9. React-菜鸟学习笔记(二)

    这篇新颖的东西是React的组件的封装和引用 <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  10. 微信支付异常:appid and openid not match

    上周调试微信小程序支付时遇到的问题,在调用统一下单接口获取微信支付的相关参数时,报了这么一个错误:appid and openid not match. 字面意思很容易理解,就是appid与openi ...