from concurrent.futures import thread
from distutils.command.build_scripts import first_line_re
import socket
import sys
import time
import os
from _thread import *
import threading

from cv2 import add

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:
    
    def multinode(self,connection, addr,Threadnum):
        
        node_connected = connection.recv(1024).decode('utf8').split()
        print(node_connected[0],'-','node'+str(Threadnum),'connected')
        with connection:
            print('Connected by', addr)
            while True:
                # print('waiting for nodes connection....')
                data = connection.recv(1024).decode("utf-8").split()
                print(data[0], 'node'+str(Threadnum),data[1])
        connection.close()
        
    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()