博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件传输, socketserver模块
阅读量:6321 次
发布时间:2019-06-22

本文共 1646 字,大约阅读时间需要 5 分钟。

一. 文件传输

# ===================================== 服务器端 ===================================== # 思路: 做一个要穿的内容的字典, 计算字典的长度, 然后发送字典的长度和字典的json的字符串, 再发送内容import structimport socketimport jsonimport hashlibsock=socket.socket()sock.bind(('127.0.0.1',8800))sock.listen(5)while 1:    print("server is working....")    conn,addr= sock.accept()    while 1:        # 接收json的打包长度        file_info_length_pack=conn.recv(4)        file_info_length=struct.unpack("i",file_info_length_pack)[0]        # 接收json字符串        file_info_json=conn.recv(file_info_length).decode("utf8")        file_info=json.loads(file_info_json)        action=file_info.get("action")        filename=file_info.get("filename")        filesize=file_info.get("filesize")        # 循环接收文件        md5=hashlib.md5()        with open("put/"+filename,"wb") as f:            recv_data_length=0            while recv_data_length

  

二. socketserver模块

import socketserverclass Myserver(socketserver.BaseRequestHandler):    def handle(self):        # 字节类型        while 1:            # 针对window系统            try:                print("等待信息")                data = self.request.recv(1024)  # 阻塞                # 针对linux                if len(data) == 0:                    break                if data == b'exit':                    break                response = data + b'SB'                self.request.send(response)            except Exception as e:                break        self.request.close()# 1 创建socket对象 2 self.socket.bind()  3 self.socket.listen(5)server=socketserver.ForkingUDPServer(("127.0.0.1",8899),Myserver)server.serve_forever()

  

 

转载于:https://www.cnblogs.com/NachoLau/p/9594497.html

你可能感兴趣的文章
Java-IO流
查看>>
Linux入门-6 Linux网络基本配置
查看>>
洗礼灵魂,修炼python(22)--自定义函数(3)—函数作用域,闭包
查看>>
newcoder Tachibana Kanade Loves Probability(小数点后第k位)题解
查看>>
vue项目未加载完成前显示loading...
查看>>
leetcode981
查看>>
安装DNS Server linux 【转载】
查看>>
windows 与linux 下用C++读取sqlite实现文件复制(一)
查看>>
IOS 5 中为什么outlet 输出口总是设定成弱类型(weak)呢
查看>>
Read-Copy Update (RCU)
查看>>
基于centos系统,系统基本检查及巩固
查看>>
在以太坊上如何取消/修改已经提交的交易
查看>>
Android IOS WebRTC 音视频开发总结(十九)-- kurento
查看>>
reshape2 数据操作 数据融合( cast)
查看>>
第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
查看>>
八、主从复制
查看>>
深入理解RunLoop 整理资料
查看>>
俄罗斯方块
查看>>
LabVIEW将字符串转化为十进制
查看>>
欢迎光临
查看>>