Skip to content
Snippets Groups Projects
logger.py 2.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • Stranger3333's avatar
    Stranger3333 committed
    import socket
    import sys
    import time
    import os
    from _thread import *
    import threading
    
    Stranger3333's avatar
    Stranger3333 committed
    import csv
    
    Stranger3333's avatar
    Stranger3333 committed
    
    
    Stranger3333's avatar
    Stranger3333 committed
    # HOST = '172.22.158.15'
    
    Stranger3333's avatar
    Stranger3333 committed
    HOST = '127.0.0.1'
    PORT = int(sys.argv[1])
    Threadnum = 0
    # print(str(sys.argv[1]))
    if len(sys.argv) > 2:
        print('Incorrect input arguments')
        sys.exit(0)
    
    def nodenum():
        print('abc')
    class server:
    
    Stranger3333's avatar
    Stranger3333 committed
        def storedata(self,data,width):
            recv_time = time.time()
            gen_time = float(data.split()[0])
            delay = recv_time-gen_time
            newline = data+' '+str(delay)+' '+str(width)
            print(newline)
            return newline.split()
    
    
    Stranger3333's avatar
    Stranger3333 committed
        def multinode(self,connection, addr,Threadnum):
            
            node_connected = connection.recv(1024).decode('utf8').split()
    
    Stranger3333's avatar
    Stranger3333 committed
            f = open(node_connected[1]+'.csv','w')
            writer = csv.writer(f)
            # writer.writerow(node_connected)
            # print(node_connected)
            # node_connected = node_connected.split()
            print(time.time(),'-',node_connected[1],'connected')
    
    Stranger3333's avatar
    Stranger3333 committed
            with connection:
    
    Stranger3333's avatar
    Stranger3333 committed
                # print('Connected by', addr)
                
    
    Stranger3333's avatar
    Stranger3333 committed
                while True:
                    # print('waiting for nodes connection....')
    
    Stranger3333's avatar
    Stranger3333 committed
                    data = connection.recv(1024).decode("utf-8")
                    if not data: 
                        print(time.time(),'-',node_connected[1],'disconnected')
                        break
                    width = len(data)
                    line = self.storedata(data,width)
                    # f.write(line)
                    writer.writerow(line)
                    data = data.split()
                    print(data[0],data[1],data[2])
    
    Stranger3333's avatar
    Stranger3333 committed
            connection.close()
    
    Stranger3333's avatar
    Stranger3333 committed
            f.close()
    
    Stranger3333's avatar
    Stranger3333 committed
            
        def server_conn(self):
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            server_addr = (HOST, PORT)
            sock.bind(server_addr)
            sock.listen(1)
            global Threadnum
            while True:
                client_conn,client_addr = sock.accept()
                addr_para = client_addr[0]
                # print(addr_para, client_conn)
                x = threading.Thread(target=self.multinode,args=(client_conn,addr_para,Threadnum+1,))
                Threadnum+=1
                x.start()
            sock.close()
    Logger = server()
    Logger.server_conn()