全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用Python中SocketServer 实现客户端与服务器间非阻塞通信

利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信。

首先,先了解下SocketServer模块中可供使用的类:

BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和UDPServer。

TCPServer/UDPServer:基本的网络同步TCP/UDP服务器。

UnixStreamServer/ UnixDatagramServer:基本的基于文件同步TCP/UDP服务器。

ForkingMixIn/ ThreadingMixIn:实现了核心的进程化或线程化的功能;作为混合类,与服务器类一并使用以提供一些异步特性;这个类不会直接实例化。

ForkingTCPServer/ ForkingUDPServer:ForkingMixIn和TCPServer/UDPServer的组合。

BaseRequestHandler:包含处理服务请求的核心功能。这个类只用于派生,所以不会生成这个类的实例可以考虑使用StreamRequestHandler或DatagramRequestHandler。

StreamRequestHandler/ DatagramRequestHandler:用于TCP/UDP服务器的服务处理工具。

下面我们正式进入主题,这里我们采用StreamRequestHandler和ThreadingTCPServer来实现客户端与服务器并发连接非阻塞socket。

ThreadingTCPServer派生自ThreadingMixIn,主要实现核心的进程化合线程化功能。

StreamRequestHandler主要用于用于TCP/UDP服务器的服务处理工具。

一、创建SocketServerTCP服务端

[python] view plain copy
#创建SocketServerTCP服务器: 
import SocketServer 
from SocketServer import StreamRequestHandler as SRH 
from time import ctime 
host = 'xxx.xxx.xxx.xxx' 
port = 9999 
addr = (host,port) 
class Servers(SRH): 
 def handle(self): 
  print 'got connection from ',self.client_address 
  self.wfile.write('connection %s:%s at %s succeed!' % (host,port,ctime())) 
  while True: 
   data = self.request.recv(1024) 
   if not data: 
    break 
   print data 
   print "RECV from ", self.client_address[0] 
   self.request.send(data) 
print 'server is running....' 
server = SocketServer.ThreadingTCPServer(addr,Servers) 
server.serve_forever() 

二、创建SocketServerTCP客户端

[python] view plain copy
from socket import * 
host = 'xxx.xxx.xxx.xxx' 
port = 9999 
bufsize = 1024 
addr = (host,port) 
client = socket(AF_INET,SOCK_STREAM) 
client.connect(addr) 
while True: 
 data = raw_input() 
 if not data or data=='exit': 
  break 
 client.send('%s\r\n' % data) 
 data = client.recv(bufsize) 
 if not data: 
  break 
 print data.strip() 
client.close() 


# Python  # SocketServer  # Python使用socketServer包搭建简易服务器过程详解  # python网络编程:socketserver的基本使用方法实例分析  # Python探索之SocketServer详解  # 基于python socketserver框架全面解析  # Python使用SocketServer模块编写基本服务器程序的教程  # 实例讲解Python中SocketServer模块处理网络请求的用法  # python网络编程之TCP通信实例和socketserver框架使用例子  # Python网络编程之socket与socketserver  # 客户端  # 来实现  # 可供  # 主要用于  # 并使  # 服务端  # 解下  # 实现了  # SocketServerTCP  # ThreadingTCPServer  # strong  # socket  # pre  # plain  # view  # import  # copy  # brush  # class 


相关文章: 阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站主机系统SEO优化与智能配置核心关键词操作指南  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  网站制作公司,橙子建站是合法的吗?  简历在线制作网站免费版,如何创建个人简历?  如何用IIS7快速搭建并优化网站站点?  如何在万网开始建站?分步指南解析  香港服务器网站卡顿?如何解决网络延迟与负载问题?  简单实现Android文件上传  音乐网站服务器如何优化API响应速度?  如何通过二级域名建站提升品牌影响力?  活动邀请函制作网站有哪些,活动邀请函文案?  大连网站设计制作招聘信息,大连投诉网站有哪些?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何快速重置建站主机并恢复默认配置?  安云自助建站系统如何快速提升SEO排名?  C++如何编写函数模板?(泛型编程入门)  如何通过IIS搭建网站并配置访问权限?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  为什么Go需要go mod文件_Go go mod文件作用说明  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网站制作壁纸教程视频,电脑壁纸网站?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何通过建站之星自助学习解决操作问题?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何选择最佳自助建站系统?快速指南解析优劣  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何选择可靠的免备案建站服务器?  官网网站制作腾讯审核要多久,联想路由器newifi官网  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何在阿里云完成域名注册与建站?  TestNG的testng.xml配置文件怎么写  如何确认建站备案号应放置的具体位置?  建站之星官网登录失败?如何快速解决?  三星网站视频制作教程下载,三星w23网页如何全屏?  开封网站制作公司,网络用语开封是什么意思?  山东网站制作公司有哪些,山东大源集团官网?  Android使用GridView实现日历的简单功能  javascript中对象的定义、使用以及对象和原型链操作小结 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。