zoukankan      html  css  js  c++  java
  • python echo服务器和客户端(客户端可以用telnet之类的)

    发上来记录一下,省得下次再写一遍

    服务器: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)
  • 相关阅读:
    【CF1023D】Array Restoration(构造,线段树)
    【CF1020E】Sergey's problem(构造)
    【CF1020D】The hat(交互,二分)
    【CF1017F】The Neutral Zone(Bitset,埃氏筛)
    【CF1016F】Road Projects(贪心)
    【ZOJ4063】Tournament(构造)
    EQueue
    领域驱动设计(DDD)部分核心概念的个人理解
    DDD CQRS架构和传统架构的优缺点比较
    限流算法-三种思路
  • 原文地址:https://www.cnblogs.com/moodlxs/p/3171641.html
Copyright © 2011-2022 走看看