#!/usr/bin/python import socket import _thread import time import socket import os import random from padra import padra LenFunc = 4 padra = padra(LenFunc) HOST = '127.0.0.1' # Standard loopback interface address (localhost) socketPort = int(random.random()*5000+1024) def broadcast(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(("", 6666)) while True: msg, addr = sock.recvfrom(1024) sock.sendto(bytes(str(socketPort),'utf-8'),addr) connectedUser = [] def listen(): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, socketPort)) s.listen() while True: conn, addr = s.accept() u = _thread.start_new_thread( user, (conn, addr)) connectedUser.append((addr,u)) class user(): def __init__(self,connection,address): self.conn = connection self.addr = address self.history = [] _thread.start_new_thread( self.receive, ()) self.send("Connected") def send(self,Message): Message=bytes(Message,'utf-8') self.conn.sendall(Message) self.history.append(("send",Message)) def receive(self): while True: len = self.conn.recv(LenFunc) if not len: break data = self.conn.recv(int(len)) padra.parse(data.decode("utf-8")) self.history.append(("receive",data)) try: _thread.start_new_thread( broadcast, ()) _thread.start_new_thread( listen, ()) except: print ("Error: unable to start thread") while 1: pass