使用SocketServer创建TCP/UDP同步服务器
来源:互联网 发布:淘宝双立人指甲钳 编辑:程序博客网 时间:2024/05/16 08:06
为了快速搭建服务器,标准库中有个高级模块SocketServer
它提供了一些可供使用的类(使用类就是会了封装那些繁琐的细节)
我们来看看SocketServer中提供的2个重要的类
- TCPServer/UDPServer 网络同步服务器
- StreamRequestHandler/DatagramRequestHandler 2种处理器,处理客户请求
注:SocketServer请求处理器的默认行为是:接收连接,得到请求,之后断开连接。也就是说如果一个客户想说好几句话时,必须得说一句,建立一个Socket
本章还提到了“事件驱动”
事件驱动:只有在事件出现的时候,程序才做出反应
什么是事件? 你点击一个按钮,就是触发一个事件,电脑会对此做出反应。发生什么事件就调用相应的函数进行处理,这就是事件驱动。我们可以定义事件类,并在这些类中定义处理器。这样就可以快速的知道是什么事件,进而快速调用相应处理器解决。这也是面向对象的编程思想。
非事件驱动:个人理解是发生一个事件后,程序首先会执行一系列操作来确定这是什么事件,确定下来后才会采用对应的方法进行解决。
下面的实例会实现一个请求处理器,只有当客户提出请求时,就会调用该处理器来处理请求。没有客户接入时,CPU会暂时休息,这样就对CPU进行有效利用。
创建TCP同步服务器
#-*- coding:utf-8 -*-#导入一个TCP服务器类和一个流处理器(处理TCP请求)from SocketServer import (TCPServer as TCP, \ StreamRequestHandler as SRH)from time import ctimeHOST = 'localhost'PORT = 20000ADDR = (HOST, PORT)class RequestHandler(SRH): def handle(self): print "...connected from", self.client_address #处理器类可以像处理文件一样处理Socket数据 self.wfile.write("[%s]%s"% (ctime(),self.rfile.readline())) tcpServer = TCP(ADDR, RequestHandler) #创建一个TCP同步服务器print "---waiting for connection----"tcpServer.serve_forever() #开启工作狂模式
创建TCP客户端
#-*- coding:utf-8 -*-from socket import *HOST = "localhost"PORT = 20000ADDR = (HOST, PORT)BUFSIZ = 1024while True: #因为服务器处理器默认行为是接收连接,得到请求,断开连接。因此要想多次发送会话,就必须重新建立socket tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data = raw_input('>>>') if not data: break #处理器类像文件一样处理Socket数据,因此行结束要自己添加\r\n tcpCliSock.send("%s\r\n" % data) data = tcpCliSock.recv(BUFSIZ) if not data: break print data.strip() #去掉行结束符\r\n tcpCliSock.close() #挂电话
0 0
- 使用SocketServer创建TCP/UDP同步服务器
- 使用SocketServer 创建TCP服务端
- python3 用socketserver框架建立TCP,UDP服务器
- Python-使用socketserver建立一个异步TCP服务器
- python TCP 服务器开发 SocketServer
- socketserver TCP and UDP and synchronous
- python基础-socketserver(tcp\udp)、selectors模块
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 手机游戏服务器使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- 游戏服务器:到底使用UDP还是TCP
- mapshaper系列之三 - I/O命令
- C++继承
- 字符串排序 (sdut oj)
- FlashFXP软件设置并关联默认编辑器
- 【NOIP2014】飞扬的小鸟
- 使用SocketServer创建TCP/UDP同步服务器
- React Native 项目常用第三方组件汇总
- 1059. Prime Factors (25)
- Integer与int的区别
- iOS 常用动画第三方
- P1130 红牌(洛谷)
- 【C/C++开发】C中调用C++函数
- 虚拟机安装centos7和相关环境配置
- windows下查看软件的安装目录