socket 上传文件代码
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 上传文件代码的更多相关文章
- PHP socket上传文件图片
最近了解了下下socket方面的东西,想做一个socket上传文件的例子. 在网上搜了搜代码执行后,图片数据传输了一半,图片的下半部分是灰色的.然后就自己仿着搜来的代码和php.net 中socket ...
- php 利用socket上传文件
php 利用socket上传文件 张映 发表于 2010-06-02 分类目录: php 一,利用fsockopen来上传文件 以前我写过一篇关于socket通信原理的博文http://blog.51 ...
- iOS上传文件代码,自定义组装body
以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...
- ExtJS + fileuploadfield上传文件代码
后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=Reques ...
- php 上传文件代码
通过 PHP,能够把文件上传到server.里面加入一些图片的推断,假设不加推断文件的类型就能够上传随意格式的文件. 为了站点的安全,肯定不让上传php文件,假设有人进入你的后台,上传了一个php文件 ...
- java上传文件代码
import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...
- PHP上传文件代码练习2 (重复文章)
表单: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...
- SpringMvc通过controller上传文件代码示例
上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...
- php上传文件代码解析
思想:把html的input标签组织成一个数组,然后去重 关键技术涉及的函数 is_dir mkdir move_uploaded_file() 涉及的数组 预定义数组$_FILES 步骤一:检查上传 ...
随机推荐
- 当xml结构很深时候 可以通过父节点删除子元素
当xml结构很深时候 可以通过父节点删除子元素
- P4754 True Vegetable
题目描述 小A现在有 NN 道题,编号为 1,2,\cdots,N1,2,⋯,N .每道题的起始毒瘤程度为 00 或 11 .在每回合,小A可以将编号连续的 KK 道题的毒瘤程度+1.但小B因为本身比 ...
- 51nod 1779逆序对统计(状压DP)
按照插入数的大小排序, 然后依次进行dp. 用一个状态表示n个数是否被选了 10110 就是表示第1.3.4个位置都选了 那么如果此时这个数该填到5这个位置,那么必定会造成一个逆序(因为下一个数会填到 ...
- CF840C On the Bench 解题报告
CF840C On the Bench 题意翻译 给定\(n\) \((1≤n≤300)\) 个数,求问有多少种排列方案使得任意两个相邻的数之积都不是完全平方数.由于方案数可能很大,输出方案数 \(m ...
- 用boost::lexical_cast进行数值转换
在STL库中,我们可以通过stringstream来实现字符串和数字间的转换: int i = 0; stringstream ss; ss << "123"; ...
- [hdu 4734]数位dp例题
通过这个题目更加深入了解到了数位dp在记忆化搜索的过程中就是实现了没有限制条件的n位数的状态复用. #include<bits/stdc++.h> using namespace std; ...
- centos7上安装docker-ce社区版
报错:Error: docker-ce-selinux conflicts with 2:container-selinux-2.12-2.gite7096ce.el7.noarch 转载:http: ...
- Kafka自我学习-报错篇
1. kafka启动出现:Unsupported major.minor version 52.0 错误, 具体的错误输出: Exception in thread "main" ...
- DIV的变高与变宽
代码: <!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title&g ...
- 最大流算法 ISAP 模板 和 Dinic模板
ISAP // UVa11248 Frequency Hopping:使用ISAP算法,加优化 // Rujia Liu struct Edge { int from, to, cap, flow; ...