server.py

#!/usr/bin/env python
# -*- coding:utf-8 -*- import socket
import os,hashlib ip_port = ('127.0.0.1',6969)
sk = socket.socket()
sk.bind(ip_port)
sk.listen(5) while True:
conn,address = sk.accept()
while True:
print('等待新指令')
#获取客户端发来的操作指令
data = conn.recv(1024)
if not data:
print('客户端已经断开')
break
cmd,filename= data.decode().split()
if os.path.isfile(filename):
#读取客户端指定的文件
f=open(filename,'rb')
m = hashlib.md5()
file_size = os.stat(filename).st_size
print('file_size:',file_size)
# 将客户端指定的文件大小返回客户端
conn.send(str(file_size).encode('utf-8'))
#接收sk.send(b"ready to recv file")
conn.recv(1024)
for line in f:
#读取文件的内容,并修改成密文
m.update(line)
# 发送改成密文后的文件内容
conn.send(line)
f.close()
conn.close() client.py
#!/usr/bin/env python
# coding:utf-8 import socket
import sys
import os ip_port = ('127.0.0.1', 6969)
sk = socket.socket()
sk.connect(ip_port) while True:
# 客户端输入要下载文件的路径,get开头
cmd = input('path:').strip()
if len(cmd) == 0:
continue
if cmd.startswith('get'):
# 发送操作指令
sk.send(cmd.encode())
file_size = sk.recv(1024)
print('file_size:',file_size)
# 发送准备好的信息
sk.send(b"ready to recv file")
file_total_size = int(file_size.decode())
receive_size = 0
#file_name =cmd.split()[1]
file_name = 'hah.log'
f = open(file_name,'wb')
while receive_size <file_total_size:
# 接收发送的密文,并写入新文件中
data = sk.recv(1024)
receive_size +=len(data)
f.write(data)
else:
print('file recv done')
f.close() sk.close()

socket 上传文件代码的更多相关文章

  1. PHP socket上传文件图片

    最近了解了下下socket方面的东西,想做一个socket上传文件的例子. 在网上搜了搜代码执行后,图片数据传输了一半,图片的下半部分是灰色的.然后就自己仿着搜来的代码和php.net 中socket ...

  2. php 利用socket上传文件

    php 利用socket上传文件 张映 发表于 2010-06-02 分类目录: php 一,利用fsockopen来上传文件 以前我写过一篇关于socket通信原理的博文http://blog.51 ...

  3. iOS上传文件代码,自定义组装body

    以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...

  4. ExtJS + fileuploadfield上传文件代码

    后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=Reques ...

  5. php 上传文件代码

    通过 PHP,能够把文件上传到server.里面加入一些图片的推断,假设不加推断文件的类型就能够上传随意格式的文件. 为了站点的安全,肯定不让上传php文件,假设有人进入你的后台,上传了一个php文件 ...

  6. java上传文件代码

    import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...

  7. PHP上传文件代码练习2 (重复文章)

    表单: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  8. SpringMvc通过controller上传文件代码示例

    上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...

  9. php上传文件代码解析

    思想:把html的input标签组织成一个数组,然后去重 关键技术涉及的函数 is_dir mkdir move_uploaded_file() 涉及的数组 预定义数组$_FILES 步骤一:检查上传 ...

随机推荐

  1. Java堆和栈

    栈中存基本类型变量数据和对象的引用 堆中存new的对象

  2. mac tomcat: error 1 operation not permitted

    在用微信传一个tomcat压缩包到别人后,解压后无法用idea启动,提示 error 1 operation not permitted,但是直接用命令可以执行. 仔细查看,原来是因为mac出于安全考 ...

  3. BZOJ4690 Never Wait for Weights(并查集)

    带权并查集按秩合并即可维护. #include<iostream> #include<cstdio> #include<cmath> #include<cst ...

  4. [CF1066C]Books Queries

    题目大意:维护一个数列,要求在左边插入一个数,在右边插入一个数,查询一个数的排名 题解:可以双指针,开个数组存每个数的位置 卡点:无 C++ Code: #include <cstdio> ...

  5. [Leetcode] subsets 求数组所有的子集

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  6. bzoj

    准确率爆棚啊,然而

  7. [SDOI2010]星际竞速——费用流

    类似于最短路的网络流,而且还要保证每个点经过一次,拆点就比较方便了. 连边怎么连?要保证最大流是n(每个点经过一次)还要能从直接跳转 将每个点拆点.源点向每个点的入点连一条容量为1费用为0的边.源点向 ...

  8. [bzoj 2733]启发式合并权值线段树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2733 平衡树待学习.从一个博客学到了合并权值线段树的姿势:http://blog.csdn ...

  9. C++ 中 string, char*, int 类型的相互转换

    一.int 1.int 转换成 string 1) to_string函数 —— c++11标准增加了全局函数std::to_string: string to_string (int val); s ...

  10. [洛谷P1074] 靶形数独

    洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...