SocketServer 모듈을 사용하여 네트워크 클라이언트와 서버 간의 동시 연결 및 비차단 통신을 실현합니다.
먼저 SocketServer 모듈에서 사용할 수 있는 클래스를 이해해 보겠습니다.
BaseServer: 핵심을 포함합니다. 서버의 함수는 혼합 클래스에 연결됩니다. 이 클래스는 파생에만 사용되므로 이 클래스의 인스턴스는 TCPServer 및 UDPServer 사용을 고려하지 않습니다.
TCPServer/UDPServer: 기본 네트워크 동기화 TCP/UDP 서버입니다.
UnixStreamServer/UnixDatagramServer: 기본 파일 기반 동기화 TCP/UDP 서버입니다.
kingMixIn/ ThreadingMixIn: 일부 비동기 기능을 제공하기 위해 서버 클래스와 함께 사용되는 핵심 프로세스 또는 스레딩 기능을 구현합니다. ForkingTCPServer/ForkingUDPServer: ForkingMixIn과 TCPServer/UDPServer의 조합입니다.
BaseRequestHandler: 서비스 요청 처리를 위한 핵심 기능이 포함되어 있습니다. 이 클래스는 파생용이므로 이 클래스의 인스턴스는 생성되지 않습니다. StreamRequestHandler 또는 DatagramRequestHandler를 사용해 보세요.
StreamRequestHandler/ DatagramRequestHandler: TCP/UDP 서버용 서비스 처리 도구입니다.
#创建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()2. 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\r\n' % data) data = client.recv(bufsize) if not data: break print data.strip() client.close()
위 내용은 Python에서 SocketServer를 사용하여 클라이언트와 서버 간의 비차단 통신을 구현하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!