python使用SocketServer实现网络服务器
SocketServer模块简化了网络服务器的编写。在进行socket创建时,使用SocketServer会减少创建步骤,而且它内部提供了4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer这4个类是同步进行处理的; 另外提供ForkingMixIn和ThreadingMixIn这两个类来支持异步。
案例
Python3.6服务器端代码为
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
#coding:utf-8 import socketserver from time import ctime print ( "=====================SocketServer TCP服务器=====================" ); HOST = ‘‘ PORT = 8888 #端口号 ADDR = (HOST, PORT) class MyRequestHandler(socketserver.StreamRequestHandler): #StreamRequestHandler实现TCP/UDP服务器的服务处理器 def handle( self ): #重写handle方法 print ( ‘连接到:‘ , self .client_address) data = self .rfile.readline().strip() print (data) self .wfile.write(( ‘[%s] %s‘ % (ctime(), data.decode( ‘utf-8‘ )).encode( ‘utf-8‘ )) tcpServer = socketserver.TCPServer(ADDR, MyRequestHandler) print ( ‘等待连接...‘ ) tcpServer .serve_forever() |
客户端代码为
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#coding:utf-8 from socket import * print ( "=====================SocketServer TCP客户端=====================" ); HOST = ‘127.0.0.1‘ PORT = 8888 BUFSIZ = 1024 ADDR = (HOST, PORT) while True : tcpCli = socket(AF_INET, SOCK_STREAM) #创建客户端套接字 tcpCli.connect(ADDR) #发起TCP连接 data = input ( ‘> ‘ ) #接收用户输入信息 if not data: #如果用户输入的内容是否为空 break tcpCli.send(data.encode( ‘utf-8‘ )) #客户端发送消息,必须发送字节数组 buffer = tcpCli.recv(BUFSIZ) #接收回应消息,接收到的是字节数组 if not buffer : #如果接收服务器信息失败,或响应消息为空 break print ( buffer .decode( ‘utf-8‘ )) #打印回应消息 tcpCli.close() #关闭客户端socket |
SocketServer实现网络服务器,socket实现客户端
原文:https://www.cnblogs.com/heimaguangzhou/p/11678945.html