python中的sockeserver模块简单实用

1、 socketserver模块简介

在python的socket编程中,实用socket模块的时候,是不能实现多个连接的,当然如果加入其它的模块是可以的,例如select模块,在这里见到的介绍下socketserver模块。

socketserver,看其名字,就知道是一个socket的服务器模块的使用,在这个模块中,主要也就是实现服务器类的相关功能,在其中,也就是将socket模块和select模块进行了封装,从而创建了一些基类供人使用。

SocketServer模块简单化了编写网络服务器的工作。
它提供了四个基本的服务类:TCPServer(使用TCP协议)、UDPServer(使用数据报)、UnixStreamServer、

 2、 socketserver服务器端和客户端代码

用SocketServer创建一个服务器需要三步:

1、通过子类化BaseRequestHandler类和覆盖它的handle()方法来创建一个请求处理器类,用于处理进来

的请求;
2、实例化服务类如TCPServer,并传递给它参数:服务器地址和请求处理器类;
3、调用服务实例对象的handle_request()或serve_forever()方法去处理请求。

 1 #服务端
 2 import socketserver
 3 import time
 4 class MyServer(socketserver.BaseRequestHandler):
 5     def handle(self):
 6         #print("服务端启动")
 7         print(self.client_address)
 8         while True:
 9             conn=self.request
10             #print(self.client_address)
11             while True:
12                 client_data=conn.recv(1024)
13                 print(str(client_data,'utf8'))
14                 print('waiting....')
15                 strtime=time.strftime('%Y-%m-%d %X')
16                 inp=input('>>>>>>>>')
17                 data=('%s %s'%(inp,strtime))
18                 conn.sendall(bytes(data,'utf8'))
19             conn.close()
20 
21 if __name__=='__main__':
22     server=socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyServer)
23     server.serve_forever()
#客户端
import socket
sk=socket.socket()
print(sk)
address=('127.0.0.1',8090)
sk.connect(address)
while True:
   inp =input('>>>>>')
   if inp=='exit':
       break
   sk.sendall(bytes(inp,'utf-8'))
   data=sk.recv(1024)
   print(str(data,'utf8'))
sk.close()

运行结果可以打开多个客户端与服务端发送信息:

Python 深入剖析SocketServer模块:https://blog.csdn.net/liuming9283/article/details/52439880(转载)

原文地址:https://www.cnblogs.com/lanyinhao/p/9216339.html