一、socketserver是标准库中的高级模块,它的目标是简化很多多样板代码,是创建网络客户端和服务器所必须的代码。(事件驱动)
二、模块类
BaseServer :包含核心服务器功能和mix-in类的钩子,可以用TCPServer或UDPserver创建类的实例
TCPserver/UDPserver:基础的TCP/UDP服务器
UnixStereamServer/UnixDatagramServer:基于文件的TCP/UDP服务器
ForkingMixIn/ThreadingMixIn:核心派出或线程功能
ForkingTCPServer/ForkingUDPServer:ForkingMixIn和TCPServer/UDPServer的组合
ThreadingTCPServer/ThreadUDPServer:ThreadingMixIn和TCPServer/UDPServer的组合
BaseRequestHandler:处理服务请求的核心功能
StreamRequestHandler/DatagramRequestHandler:实现TCP/UDP服务器的服务处理
三、TCP服务器
from socketserver import TCPServer as TCP, StreamRequestHandler as SRH
from time import ctime
Host = ""
Post = 21567
Addr = (Host,Post)
class MyRequestHandler(SRH):
def handle(self):
print ('...connectde from:',self.client_address)
self.wfile.writr('[%s]%s'%(ctime(),self.rfile.readline())) tcpServ = TCP(Addr,MyRequestHandler)
print ('waiting for connection ...')
tcpServ.server_forever()
四、TCP客户端
from socket import *
Host = 'localhost'
Post = 21567
Bufsiz = 1024
Addr =(Host,Post)
while True:
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(Addr)
data = raw_input('>')
if not data:
break
tcpCliSock.Send('%s\r\n'%data)
data = tcpCliSock.recv(Bufsiz)
if not data:
break
print (data.strip())
tcpCliSock.close()