day 25 udp, socketserver
建立UDP连接的示例:
# server端 import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1', 10010))
while True:
conn, addr = sk.recvfrom(1024)
print(conn.decode())
msg = input('>>>: ')
sk.sendto(msg.encode(),addr)
if msg == 'q': break sk.close()
# client 端 import socket
sk = socket.socket()
sk.connect(('127.0.0.1', 10010))
while True:
msg = sk.recv(1024)
print(msg.decode())
msg1 = input('>>>>: ')
sk.send(msg1.encode())
socketserver示例:
# server端
import socketserver
class Myserver(socketserver.BaseRequestHandler):
def handle(self):
conn = self.request
while True:
msg = input('>>>.')
conn.send(msg.encode())
msg = conn.recv(1024)
print(msg.decode()) server = socketserver.ThreadingTCPServer(('127.0.0.1',10010),Myserver)
server.serve_forever()
client端 import socket
sk = socket.socket()
sk.connect(('127.0.0.1', 10010))
while True:
msg = sk.recv(1024)
print(msg.decode())
msg1 = input('>>>>: ')
sk.send(msg1.encode())
文件下载:(文件上传则相反)
# server端 import os
import json
import socket
import struct file_path = r'E:\study\teacher\day22 视频以及笔记\02 深圳骑士计划脱产班3期 day22 面向对象之反射.mp4'
file_size = os.path.getsize(file_path) # 获得文件大小
file_name = os.path.basename(file_path) # 获得文件名
file_info = {'file_size': file_size, 'file_name': file_name, 'operate': 'download'}
json_file_info = json.dumps(file_info) # json字典,用于网络传输
len_json_file_info = len(json_file_info) # 求出json后字典bytes的长度
bytes_json_file_info = json_file_info.encode() # 将字典json后 在转换成bytes格式 sk = socket.socket()
sk.bind(('127.0.0.1', 10010))
sk.listen() conn ,addr = sk.accept()
conn.send(struct.pack('i', len_json_file_info)) # 发送struck后的len字典长度
conn.send(bytes_json_file_info) # 发送字典 while file_size > 0:
with open(file_path, 'rb') as f:
count = f.read(2048) # 每次读2048字节
conn.send(count) # 发送读取到的内容
file_size -= len(count) # 总大小,减去已发送的大小 conn.close()
sk.close()
# client 端 import socket
import struct
import json sk = socket.socket()
sk.connect(('127.0.0.1', 10010))
len_info = sk.recv(4) # 收到4个字节,内容为struct了字典长度
len_file_info = struct.unpack('i', len_info)[0] # 结struct包,拿元组第一个元素,就是字典的长度
file_info = sk.recv(len_file_info).decode() # 按照字典长度,接收相应的数据,并解码
info_dic = json.loads(file_info) # 字典去json化 with open(info_dic['file_name'], 'wb') as f1:
while info_dic['file_size'] > 0:
count = sk.recv(2048)
f1.write(count)
info_dic['file_size'] -= len(count)
sk.close()
day 25 udp, socketserver的更多相关文章
- tcp上传大文件举例、udp实现qq聊天、socketserver模块实现并发
为什么会出现粘包现象(day31提到过,这里再举个例子) """首先只有在TCP协议中才会出现粘包现象,因为TCP协议是流式协议它的特点是将数据量小并且时间间隔比较短的数 ...
- tcp\udp 操作系统发展史
目录 为什么会出现粘包现象 socket发送大文件示例 UDP协议 基于UDP实现简易版本的qq 总结: SocketServer模块介绍(让tcp也能支持并发) 为什么会出现粘包现象 TCP 三次握 ...
- windows常用端口对应表
端口概念 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口.SC端口等等.二是逻辑意义 ...
- port与大全portClose方法
在网络技术,port(Port)通常,有两种含义:首先,物理意义port,例,ADSL Modem.枢纽.开关.路由器连接其他网络设备的接口,如RJ-45port.SCport等等.第二个是逻辑意义p ...
- port大全及port关闭方法
在网络技术中,port(Port)大致有两种意思:一是物理意义上的port,比方,ADSL Modem.集线器.交换机.路由器用于连接其它网络设备的接口,如RJ-45port.SCport等等.二是逻 ...
- 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集
第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...
- 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备
[root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...
- CentOS 7 服务端口表
# Note that it is presently the policy of IANA to assign a single well-known# port number for both T ...
- Windows操作系统上各种服务使用的端口号, 以及它们使用的协议的列表
Windows操作系统上各种服务使用的端口号, 以及它们使用的协议的列表 列表如下 Port Protocol Network Service System Service System Servic ...
随机推荐
- Netty - 1
Netty设计特点: 1. io线程模型 使用reactor模式,同步非阻塞.这决定了可以用最少的资源做更多的事. 2. 内存零拷贝 使用直接缓存 3. 内存池设计 申请的内存可以重用,主要指直接内存 ...
- Slava and tanks 877C
C. Slava and tanks time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Eclipse实用操作
1.缩进:Tab 2.退格:Shift+Tab 3.包结构展开方式:Package Presentation 4.快速定位文件:按ctrl键不放,鼠标移至链接处 5.为属性快速生成相应的get和set ...
- Unable to connect to zookeeper server within timeout: 5000
错误 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error crea ...
- Py designer 小程序实现实例
前提 1.已安装Python(环境Win7+Python 2.7.12 ) 2.已安装插件pyqt4(插件获取路径:https://pan.baidu.com/s/1i50wAOH) 步骤 1.打开p ...
- Android DevArt3:SingleTask启动模式探究:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity, 再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity? 答案是,回到MainActivity。
SingleTask启动模式探究 GitHub如题:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity,再从C中又启动AActiv ...
- NYOJ201-作业题-(dp)
201-作业题 内存限制:64MB 时间限制:3000ms 特判: No通过数:9 提交数:28 难度:3 题目描述: 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计 ...
- 当try-catch-finally代码块遇上return,代码执行流程是怎样
这里打算用一个Java读取文件内容的例子来测试,文件存在,不抛异常,文件不存在,则抛出FileNotFoundException: Java读取文件代码如下: /** * 根据路径和文件名获取内容 * ...
- ADO.Net创建数据模型和数据访问类及泛型集合
数据模型和数据访问类:数据模型: 使用面向对象中的封装特性,将数据表中的行数据组成一个同样结构的对象,来单独使用: 数据访问类: 将某一个表的全部增删改查操作的方法写进去,方便统一管理和调用: 数据模 ...
- Html写作规范
HTML是描述网页结构的超文本标记语言,HTML规范能够使HTML代码风格保持一致,使得HTML更容易理解和维护. 整体结构 用编辑器快捷键一键搞定 <!DOCTYPE html>---- ...