Skip to content
Snippets Groups Projects
logger.py 2.12 KiB
Newer Older
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)

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)
Stranger3333's avatar
Stranger3333 committed
        # print(newline)
Stranger3333's avatar
Stranger3333 committed
        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()