最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:25:15
文档

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

利用Python中SocketServer实现客户端与服务器间非阻塞通信方法介绍:利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和
推荐度:
导读利用Python中SocketServer实现客户端与服务器间非阻塞通信方法介绍:利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和


利用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服务端

#创建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客户端

#from socket
from socket import * 
 
host = 'xxx.xxx.xxx.xxx' 
port = 9999 
bufsize = 1024 
addr = (host,port) 
#client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client = socket(AF_INET,SOCK_STREAM) 
client.connect(addr) 
while True: 
 data = raw_input() 
 if not data or data=='exit': 
 break 
 client.send('%s
' % data) 
 data = client.recv(bufsize) 
 if not data: 
 break 
 print data.strip() 
client.close()

文档

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

利用Python中SocketServer实现客户端与服务器间非阻塞通信方法介绍:利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top