• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 利用Python中SocketServer 实现客户端与服务器间非阻塞通信

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python socketserver,python3 socketserver,socketserver,java socketserver,borlandsocketserver等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

利用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() 
</div>

二、创建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() 
</div>

</div>

您可能想查找下面的文章:

  • Python与Java间Socket通信实例代码
  • 利用Python中SocketServer 实现客户端与服务器间非阻塞通信
  • Python使用SocketServer模块编写基本服务器程序的教程
  • 实例讲解Python中SocketServer模块处理网络请求的用法
  • 结合Python的SimpleHTTPServer源码来解析socket通信
  • Python中基础的socket编程实战攻略
  • python实现简单socket通信的方法
  • Python内置的HTTP协议服务器SimpleHTTPServer使用指南
  • Python的Socket编程过程中实现UDP端口复用的实例分享
  • python使用socket远程连接错误处理方法

相关文章

  • 使用Python的Scrapy框架十分钟爬取美女图
  • python 随机数生成的代码的详细分析
  • Python pickle类库介绍(对象序列化和反序列化)
  • Python切片用法实例教程
  • Python编程之event对象的用法实例分析
  • python实现封装得到virustotal扫描结果
  • 在Python下利用OpenCV来旋转图像的教程
  • python实现在每个独立进程中运行一个函数的方法
  • python中的编码知识整理汇总
  • 分析Python编程时利用wxPython来支持多线程的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python日志记录模块实例及改进
    • 如何使用七牛Python SDK写一个同步脚本及使用教程
    • Python爬虫利用cookie实现模拟登陆实例详解
    • Python的re模块正则表达式操作
    • Python实现分割文件及合并文件的方法
    • 用Python给文本创立向量空间模型的教程
    • 举例简单讲解Python中的数据存储模块shelve的用法
    • python字符串排序方法
    • python计算时间差的方法
    • itchat和matplotlib的结合使用爬取微信信息的实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有