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区别总 ...
随机推荐
- 217/219. Contains Duplicate /Contains Duplicate II
原文题目: 217. Contains Duplicate 219. Contains Duplicate II 读题: 217只要找出是否有重复值, 219找出重复值,且要判断两者索引之差是否小于k ...
- servlet 验证码生成
servlet package com.htpo.net; import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D; ...
- centos 安装python3.6
环境准备 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel 首先去官网下 ...
- SPSS-因子分析
因子分析 有可能用较少的综合指标分析存在于各变量中的各类信息,而各综合指标之间彼此是不相关的,代表各类信息的综合指标称为因子.定义:因子分析就是用少数几个因子来描述许多指标或因素之间的联系,以较少几个 ...
- JAVA语言 第七周
啊因为来学校了,没有网,昨天的总结今天来写吧. num1=In.next(); student1[number].stuNum=num1; 这个添加的代码,显示添加成功了,但是根本查询不出来,烦 ...
- css flex 兼容ios android--商品展示 添加购物车
https://blog.csdn.net/u010035608/article/details/52711248 <!DOCTYPE html> <html> <hea ...
- linux下安装Cmake和Sniffles
-------------------------------------------------------------------cmake的安装------------------------- ...
- python教程_1
1.2 不同应用领域的主流操作系统 (1)桌面操作系统 (2)服务器操作系统 (3)嵌入式操作系统 (4)移动设备操作系统 1>.桌面操作系统: Windows系列(微软的.net开发) 用户群 ...
- 游戏AI技术 2
[Unity3D人工智能编程精粹 2] 1.跟随领队行为. 用靠近(Seek)或追逐(Pursuit)实现跟随领队行为并不好.在Seek中,AI角色会被推向领队,最终与领队占据相同位置.而Pursui ...
- vue.js 三种方式安装(转)
https://blog.csdn.net/m0_37479246/article/details/78836686