发上来记录一下,省得下次再写一遍
服务器:server.py
#-*- coding:utf-8 -*- from SocketServer import TCPServer, BaseRequestHandler import traceback import struct import logging # 连接处理类 class MyBaseRequestHandler(BaseRequestHandler): """ #从BaseRequestHandler继承,并重写handle方法 """ def handle(self): #循环监听(读取)来自客户端的数据 try: while True: data = self.request.recv(4) if data == '': break logging.info("recv data, echo") self.request.sendall(data) except: traceback.print_exc() logging.info("close connect") self.request.close() if __name__ == "__main__": #初始化日志 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', #filename='myapp.log', #filemode='w' ) logging.info(" =========== Server start =========") host = "" #主机名,可以是ip,像localhost的主机名,或"" port = 5555 #端口 addr = (host, port) #购置TCPServer对象, server = TCPServer(addr, MyBaseRequestHandler) #启动服务监听 server.serve_forever()
客户端:client.py
#-*- coding:utf-8 -*- from socket import * import sys import time import string HOST = sys.argv[1] SPAN = 0; if len(sys.argv) == 3: SPAN = string.atof(sys.argv[2]) PORT = 5555 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data = "aaaa" maxD = 0 while True: t1 = time.time() tcpCliSock.send(data) t = tcpCliSock.recv(4) t2 = time.time() td = t2 - t1; if td > maxD: maxD = td print ("recv data , timediff=" + str(td) + ", max=" + str(maxD)) print("sleep " + str(SPAN)) time.sleep(SPAN)