socket模拟服务器,客户端下载东西(ftp)
服务端(ftp_server.py)
import hashlib,socket,os server = socket.socket()
server.bind(("localhost",9999))
server.listen()
while True:
client,address = server.accept()
while True:
req_data = client.recv(1024)
print(req_data.decode())
if not req_data:
print("客户端连接已断开")
break
if len(req_data) == 0: continue
if os.path.isfile(req_data.decode()):
file_size = os.stat(req_data).st_size
print("file size:",file_size)
client.send(str(file_size).encode('utf-8'))
client_ack = client.recv(1024)
f = open(req_data,'rb')
for line in f:
m = hashlib.md5()
print(line)
client.send(line)
m.update(line)
res = m.hexdigest()
client.send(res.encode('utf-8'))
else:
client.send("无此文件")
客户端(ftp_client.py)
import socket,hashlib client = socket.socket()
client.connect(("localhost",9999))
while True:
cmd = input("输入文件名>>:")
if cmd !=None or cmd != '':
client.send(cmd.encode('utf-8'))
file_total_size = client.recv(1024)
print(file_total_size)
file_total_size = int(file_total_size)
client.send(b"ok")
curent_size = 0
size = 0
m = hashlib.md5()
f = open(cmd+"new",'wb')
while curent_size != file_total_size:
if file_total_size-curent_size > 1024:#不是最后一次
size = 1024
else:
size = file_total_size-curent_size
ser_info = client.recv(size)
print(ser_info)
f.write(ser_info)
m.update(ser_info)
curent_size += len(ser_info) else:
print("原文件:%s,新文件:%s"%(str(file_total_size),str(curent_size)))
ser_md5 = client.recv(1024)
cli_md5 = m.hexdigest()
f.close()
print("cli_md5:%s,ser_md5:%s"%(cli_md5,ser_md5.decode()))
说明:
1.程序使用python3运行
2.明确http传输的基本概念
socket模拟服务器,客户端下载东西(ftp)的更多相关文章
- C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法
C#调用接口注意要点 在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...
- socket,模拟服务器、客户端通信
服务器代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...
- c++下基于windows socket的服务器客户端程序(基于UDP协议)
前天写了一个基于tcp协议的服务器客户端程序,今天写了一个基于UDP协议的,由于在上一篇使用TCP协议的服务器中注释已经较为详细,且许多api的调用是相同的,故不再另外注释. 使用UDP协议需要注意几 ...
- Socket 模拟HTTP客户端请求
import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import ja ...
- socket本地模拟TCP 服务器+客户端(二)
建立两个py文件,分别打开两个cmd界面,即可进行通信.服务器端运用多进程,连续不断的处理从客户端接收到的数据:客户端通过一个list不断给客户端发送数据. (每个连接都必须创建新线程(或进程)来处理 ...
- 介绍一款chrom浏览器插件 DHC是一款使用chrome模拟REST客户端向服务器发送测试数据的谷歌浏览器插件
先打个小广告哈 公司招java架构师,月薪25K以上,负责电商平台架构工作,工作地点在北京 1号线永安里站 附近,如有意向 请把简历发我邮箱jia6235@163.com 可以内部推荐. DHC是一款 ...
- 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍
Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...
- C# Socket 模拟http服务器帮助类
0x01 写在前面 0x02 Http协议 0x03 TCP/IP 0x04 看代码 0x05 总结 0x01 写在前面 由于工作中,经常需要在服务器之间,或者进程之间进行通信,分配任务等.用Sock ...
- 运用socket实现简单的服务器客户端交互
Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...
随机推荐
- github 版本控制 android studio
注:本教程实验于android studio 3.1.2 1.下载git :https://gitforwindows.org/ 安装 git. 2.配置git 3.配置github 4.上传项目 ...
- Algorithm: Euler function
欧拉函数. phi(n)表示比n小的与n互质的数的个数,比如 phi(1) = 1; phi(2) = 1; phi(3) = 2; phi(4) = 2; phi(5) = 4; 性质: 1. 如果 ...
- LuNamp和LuManager的目录结构
/|---- etc/|-------- my.cnf #mysql配置文件|-------- ipfw.conf #ipfw防火墙的配置文件(仅FreeBSD)|---- home/|------- ...
- 配置Nginx四层负载均衡
nginx 支持TCP转发和负载均衡的支持 实现下面的架构: 看配置: #user nobody; worker_processes 1; #error_log logs/error.log; #er ...
- mongodb存储二进制数据的二种方式——binary bson或gridfs
python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...
- 日志的打印 —— Java 支持
1. java.util.logging.Logger 日志级别(logLevel) OFF,Integer.MAX_VALUE SEVERE,1000 WARNING,900 INFO,800 CO ...
- python 模块和模块sys.argv
In [5]: import os In [6]: os.__file__ Out[6]: '/usr/local/lib/python2.7/os.pyc' In [7]: import rando ...
- ubuntu下网络性能测试
iperf的主要功能 TCP 测量网络带宽 报告MSS/MTU值的大小和观测值 支持TCP窗口值通过套接字缓冲 当P线程或Win32线程可用时,支持多线程.客户端与服务端支持同时多重连接 UDP 客户 ...
- error: templates may not be ‘virtual’
模板函数不能是虚函数,原因如下: 首先呢,模板函数并不是函数,他需要特定的类型去实例化成为函数.你定义一个函数模板,是不生成任何函数的,只有当你用代码去调用它时,才会根据你的类型去实例化成为特定 ...
- 2.3 Hive的数据类型讲解及实际项目中如何使用python脚本对数据进行ETL
一.hive Data Types https://cwiki. apache. org/confluence/display/HiveLanguageManual+Types Numeric Typ ...