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 步骤一:检查上传 ...
随机推荐
- Java 利用枚举实现单例模式
引言 单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法. Java枚举 基本用法 枚举的用法比较多,本文主要旨在介绍利用枚 ...
- oracle 引用类型声明
- 你试过不用if写代码吗?
我在教新手编程时,喜欢给他们一些小小的挑战,比如:不使用if语句(或者三元运算符.switch语句等)解决一些编程问题.这样做有什么意义吗?事实上,它可以迫使你从不同的角度寻找解决方法,也许可以找到更 ...
- [Leetcode] Populating next right pointer in each node ii 填充每个节点的右指针
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
- 在Eclipse上使用egit插件通过ssh协议方式上传项目代码的具体步骤
在Eclipse上使用egit插件通过ssh协议方式上传项目代码 前戏: 使用ssh方式可以不通过https协议,避免直接提供账号密码的方式上传项目到git在线服务器,如Bitbucket.GitHu ...
- C语言指针大杂烩
By francis_hao Oct 31,2016 指针数组和数组指针 指针数组本身是个数组,数组的内容是指针.形如char *pa[].由于[]优先级高于*,pa先于[]结合表示pa是一个数组,p ...
- [hdu 6069]素数筛+区间质因数分解
给[L,R]区间的每一个数都质因数分解的复杂度可以达到(R-L)logR,真的涨姿势…… 另外,质因数分解有很重要的一点,就是只需要打sqrt(R)以内的素数表就够了……因为超过sqrt(R)的至多只 ...
- Spring中Resource接口的前缀书写格式
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt"); //这个 ...
- html中音频和视频
HTML5音频中的新元素标签 src:音频文件路径. autobuffer:设置是否在页面加载时自动缓冲音频. autoplay:设置音频是否自动播放. loop:设置音频是否要循环播放. contr ...
- JSON.parse() 和 JSON.stringify()使用
1.parse()是用于从一个字符串中解析出json对象 定义一个字符串:var str = '{"name":"superman","age&quo ...