python sockerserver tcp 文件下载 udp
#tcp serverclass MyHandler(socketserver.BaseRequestHandler): def handle(self): # 通信循环 while True: try: cmd = self.request.recv(1024) if len(cmd) == 0: break else: cmd = cmd.decode(encoding='utf-8') if cmd=='up': import os if cmd == 'get': path = 'file.txt' total_size = os.path.getsize(filename=path) import hashlib with open(path, 'rb') as f: for line in f: line hashlib_value = 'xxxx' else: obj = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) s_out = obj.stdout.read() s_err = obj.stderr.read() total_size = len(s_out) + len(s_err) path = None hashlib_value = '你大爷' header_dic = { 'file_name': path, 'total_size': total_size, 'hashlib': hashlib_value } header_json = (json.dumps(header_dic)).encode(encoding='utf-8') header_len = struct.pack('i', len(header_json)) # print(header_len) self.request.send(header_len) # print(header_json) self.request.send(header_json) if cmd == 'get': with open(path, 'rb') as f: for line in f: # print(line) self.request.send(line) else: # print('cmd') self.request.send(s_out) self.request.send(s_err) except ConnectionResetError: break self.request.close() if __name__ == "__main__": s = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyHandler, bind_and_activate=True) s.serve_forever()
#tcp clientimport socket, struct, json, hashlib st = socket.socket(socket.AF_INET, socket.SOCK_STREAM)st.connect(('127.0.0.1', 8080)) def get_file(st): data = st.recv(4) data = struct.unpack('i', data)[0] header_json = json.loads((st.recv(data)).decode('utf-8')) print(header_json) file_down = b'' encodeing = None while header_json['total_size'] > 0: msg = st.recv(1024) header_json['total_size'] -= len(msg) file_down += msg try: if encodeing == None: print(msg.decode(encoding='utf-8')) else: print(msg.decode(encodeing='gbk')) except Exception: encodeing == False print(msg.decode(encoding='gbk')) return file_down while True: msg = input('请输入').strip() if not len(msg): continue try: st.send(msg.encode('utf-8')) file_down = get_file(st) if msg == 'get': with open('save.txt', 'wb') as f: f.write(file_down) print('end') except ConnectionResetError: break st.close() #udp server
import socketserverclass MyHandler(socketserver.BaseRequestHandler): def handle(self): data = self.request[0] self.request[1].sendto(data.upper(), self.client_address) if __name__ == '__main__': ss=socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyHandler) ss.serve_forever()
#udp clientfrom socket import * st = socket(AF_INET, SOCK_DGRAM)while True: msg = input('请输入').strip() if not len(msg): print('不要发送空数据') st.sendto(msg.encode(encoding='utf-8'), ('127.0.0.1', 8080)) print('发送了数据') print(st.recvfrom(1024)) st.close()
python sockerserver tcp 文件下载 udp的更多相关文章
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- 利用python实现TCP和UDP服务器
利用python的socket模块可以实现基本的网络编程,并且只限于一对一的连接.当然,也可以在其基础上实现一个网络服务器,但由于太底层这种做法不被推荐.其实如果要实现一个网络服务器很简单,调用pyt ...
- python中TCP和UDP区别
TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览 ...
- python实现tcp文件下载器
服务器端代码 import socket import os import threading # 处理客户端请求下载文件的操作(从主线程提出来的代码) def deal_client_request ...
- 利用Python进行TCP、UDP套接字编程
参考:http://www.cnblogs.com/whatbeg/p/5155524.html http://www.cnblogs.com/nzyjlr/p/4236287.html
- Python基础教程之udp和tcp协议介绍
Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...
- python socket 编程(TCP与UDP)
实验环境:python2 一.TCP编程 1.建立TCP服务器 ①创建TCPServer.py文件 ②编写服务器代码 1)创建socket对象,调用socket构造函数 2)绑定ip端口(IP号和端口 ...
- python网络编程socket编程(TCP、UDP客户端服务器)
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...
- python基础-TCP协议和UDP协议
TCP协议是一种流式协议,UDP协议是一种数据包协议. TCP和UDP是OSI模型中传输层的协议.TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输. TCP和UDP区别总 ...
随机推荐
- [cocos2d-x]移动平台游戏开发(图)
FreeMind的.mm文件下载: http://yunpan.cn/cfL3QrrQVkVTd (提取码:a125)
- 封装jQuery下载文件组件
使用jQuery导出文档文件 jQuery添加download组件 jQuery.download = function(url, data, method){ if( url && ...
- UI简单工作
UI用户界面 需求——效果图——风格设计——高保证效果——html 网页的宽度=屏幕的宽度-纵向滚动条的宽度 企业网站一般是1280 根据百度流量研究所 目前我们的网页注主要是1024和1200 ...
- Hide-Music-Player 一个完整的音乐播放器《IT蓝豹》
Hide-Music-Player 一个完整的音乐播放器 Hide-Music-Player 一个完整的音乐播放器,本例子主要包括几个点 (1)摇一摇进入播放器 (2)下拉展开新视图(扫描音乐) (3 ...
- MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)
在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max).nvarchar(max).varbinary(max) ).大值数据类型最多可以存储2^30-1个字节的数据. 这几 ...
- thymeleaf 字符串的拼接
- mysql 触发器介绍
create trigger triggerName after/before insert/update/delete on tableName for each row --这句话在my ...
- CentOS YUM 安装 TOMCAT6
安装tomcat6 1 yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps 启动tomcat6 1 service tomcat6 st ...
- fiddler常用操作之断点
fiddler常用操作断点 标签(空格分隔): fiddler断点 一.断点: 1.为什么要打断点呢? 比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于1 ...
- CRM某些表加入审计
--更新参数文件,设置Audit等级 alter system set audit_trail=db,extended scope=spfile; --更新参数文件,开始Audit alter sys ...