def __init__(self, name, port): self.name = name self.port = port self.socket = sk.socket() self.ui = Mywindow(self.name) self.init_host() self.ui.init_ui()
def __init__(self, name): self.mutex = threading.Lock() self.name = name self.socket1 = sk.socket() self.socket2 = sk.socket() self.socket3 = sk.socket() self.socket4 = sk.socket() self.memory = [] self.ui = Mywindow(self.name) self.init_router() t_q = threading.Thread(target=self.myquit) t_q.start() self.ui.init_ui()
class Host(object): def __init__(self, name, port): self.name = name self.port = port self.socket = sk.socket() self.ui = Mywindow(self.name) self.init_host() self.ui.init_ui() def handle_host(self, c): message = bytes.decode(c.recv(100)) myfile = open(self.name + ".txt", "a") myfile.write(message + "\n") myfile.close() self.ui.show2("recv:" + message + "\n") c.close() def server(self, socket, port): socket.bind((sk.gethostname(), port)) socket.listen(10) while True: c, addr = socket.accept() #print(addr) #t = threading.Thread(target = self.handle_host, args = (c,)) #t.start() self.handle_host(c) def init_host(self): t1 = threading.Thread(target=self.server, args=(self.socket, self.port)) t1.start() t2 = threading.Thread(target=self.send_message) t2.start() t_q = threading.Thread(target=self.myquit) t_q.start() def send_message(self): i = 0 while True: message = "" message += "header:" + remotes[random.randint(0, 2)] + "\n" message += "data:" + str(os.getpid()) + ":" + str( port) + ":" + str(i) + ":" + "161730213" + "\n" b_message = str.encode(message) s = sk.socket() host = sk.gethostname() s.connect((host, router_port)) s.send(b_message) self.ui.show("send:\n" + message) s.close() i = i + 1 time.sleep(1) def myquit(self): input("enter to quit\n") os._exit(0)
# -- coding: utf-8 -- import warnings import os # 忽略警告 os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3" warnings.filterwarnings(action='ignore') from ui import Mywindow from sys import argv, exit from PyQt5.QtWidgets import QApplication,QMainWindow if __name__ == '__main__': app = QApplication(argv) window = QMainWindow() ui = Mywindow(window) window.show() exit(app.exec_())
class Router(object): def __init__(self, name): self.mutex = threading.Lock() self.name = name self.socket1 = sk.socket() self.socket2 = sk.socket() self.socket3 = sk.socket() self.socket4 = sk.socket() self.memory = [] self.ui = Mywindow(self.name) self.init_router() t_q = threading.Thread(target=self.myquit) t_q.start() self.ui.init_ui() def handle_host(self, c, idx): message = bytes.decode(c.recv(100)) self.mutex.acquire() self.memory.append(message) self.ui.show("memory store\n" + str(self.memory) + "\n") self.mutex.release() c.close() def server(self, socket, port, idx): socket.bind((sk.gethostname(), port)) socket.listen(10) while True: c, addr = socket.accept() #print(addr) #t = threading.Thread(target = self.handle_host, args = (c,)) #t.start() self.handle_host(c, idx) def forward(self, num): while True: self.mutex.acquire() if len(self.memory): message = self.memory[0] del (self.memory[0]) header = message.split("\n")[0] data = message.split("\n")[1] ip = header.split(":")[1] self.ui.show2("Thread" + str(num) + "forward: " + ip + "\n") data = data[5:] s = sk.socket() host = sk.gethostname() r_ip = ip_to_int(ip) if (r_ip & ip_to_int(ip_table[0][2]) == ip_to_int( ip_table[0][0])): idx = 0 self.ui.show2("Thread" + str(num) + "net_id: " + ip_table[0][0] + "\n") elif (r_ip & ip_to_int(ip_table[1][2]) == ip_to_int( ip_table[1][0])): idx = 1 self.ui.show2("Thread" + str(num) + "net_id: " + ip_table[1][0] + "\n") elif (r_ip & ip_to_int(ip_table[2][2]) == ip_to_int( ip_table[2][0])): idx = 2 self.ui.show2("Thread" + str(num) + "net_id: " + ip_table[2][0] + "\n") elif (r_ip & ip_to_int(ip_table[3][2]) == ip_to_int( ip_table[3][0])): idx = 3 self.ui.show2("Thread" + str(num) + "net_id: " + ip_table[3][0] + "\n") try: if (idx == 0): s.connect((host, host1_port)) s.send(str.encode(data)) s.close() elif (idx == 1): s.connect((host, host2_port)) s.send(str.encode(data)) s.close() elif (idx == 2): s.connect((host, host3_port)) s.send(str.encode(data)) s.close() elif (idx == 3): s.connect((host, host4_port)) s.send(str.encode(data)) s.close() except ConnectionRefusedError as e: e = e self.mutex.release() continue self.mutex.release() def init_router(self): t1 = threading.Thread(target=self.server, args=(self.socket1, port1, 0)) t1.start() t2 = threading.Thread(target=self.server, args=(self.socket2, port2, 1)) t2.start() t3 = threading.Thread(target=self.server, args=(self.socket3, port3, 2)) t3.start() t4 = threading.Thread(target=self.server, args=(self.socket4, port4, 3)) t4.start() t_forward_1 = threading.Thread(target=self.forward, args=(1, )) t_forward_1.start() t_forward_2 = threading.Thread(target=self.forward, args=(2, )) t_forward_2.start() t_forward_3 = threading.Thread(target=self.forward, args=(3, )) t_forward_3.start() def myquit(self): input("enter to quit\n") os._exit(0)