0X03-SocketServer TCP服务器-Studying
SocketServer TCP服务器
#! /usr/bin/env python from socketserver import (TCPServer as TCP, StreamRequestHandler as SRH) from time import ctime ''' 作用:通过使用SocketServer类,TCPServer 和 StreamRequestHandler ,该脚本创建了一个时间戳TCP服务器 ''' HOST = '' PORT = 21567 ADDR = (HOST,PORT) ''' 函数解析: 1;readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存 2;write() 方法用于向文件中写入指定字符串 3;wfile不缓冲数据,对客户端发送的数据需一次性写入 4;client_address:一个包含两个成员(主机名和端口)的数组,服务端输出的任何数据都将通过它们发送 ''' class MyRequestHandler(SRH): def handle(self): print("...connected from:",self.client_address) self.wfile.write('[%s] %s' %(ctime(),self.rfile.readline())) #利用给定的主机信息和请求处理类创建TCP服务器 tcpServ = TCP(ADDR,MyRequestHandler) print("waiting for connection...") tcpServ.serve_forever()
SocketServer TCP Client
#! /usr/bin/env python from socket import * ''' 作用:时间戳TCP客户端。 ''' HOST = 'localhost' PORT = 21567 BUFSIZ = 1024 ADDR = (HOST,PORT) ''' 函数解析: 1;Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 ''' while True: tcpCliSock = socket(AF_INET,SOCK_STREAM) tcpCliSock.connect(ADDR) data = input('> ') data = data.encode() if not data: break tcpCliSock.send(data) #tcpCliSock.send('%s\r\n' % data) data = tcpCliSock.recv(BUFSIZ) if not data: break print(data.strip()) tcpCliSock.close()