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
' % data)
    data = tcpCliSock.recv(BUFSIZ)
    if not data:
        break
    print(data.strip())
    tcpCliSock.close()
原文地址:https://www.cnblogs.com/aaron456-rgv/p/12508769.html