|  |  |  | @ -28,13 +28,13 @@ from sender import sender | 
			
		
	
		
			
				
					|  |  |  |  | #     pass | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class recver_net(): | 
			
		
	
		
			
				
					|  |  |  |  |     def __init__(self): | 
			
		
	
		
			
				
					|  |  |  |  |         self.file_name = "" | 
			
		
	
		
			
				
					|  |  |  |  |         self.flle_size = 0 | 
			
		
	
		
			
				
					|  |  |  |  |         self.file_sha256 = "" | 
			
		
	
		
			
				
					|  |  |  |  |         self.addr = ("", 0) | 
			
		
	
		
			
				
					|  |  |  |  |     def __init__(self,port,client_host,client_port): | 
			
		
	
		
			
				
					|  |  |  |  |         self.client_host = client_host | 
			
		
	
		
			
				
					|  |  |  |  |         self.client_port = client_port | 
			
		
	
		
			
				
					|  |  |  |  |         self.letter = Letter() | 
			
		
	
		
			
				
					|  |  |  |  |         self.port=port | 
			
		
	
		
			
				
					|  |  |  |  |         self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 
			
		
	
		
			
				
					|  |  |  |  |         self.server.bind(('127.0.0.1', 8425)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.server.bind(('0.0.0.0', self.port)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.server.listen(10) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def recver_thread(self): | 
			
		
	
	
		
			
				
					|  |  |  | @ -43,25 +43,26 @@ class recver_net(): | 
			
		
	
		
			
				
					|  |  |  |  |             data = conn.recv(10240) | 
			
		
	
		
			
				
					|  |  |  |  |             msg = json.loads(data.decode()) | 
			
		
	
		
			
				
					|  |  |  |  |             if int(msg['flag']) == 0: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("\nhaved received data:" + msg["data"]) | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[+] haved received data:" + msg["data"]) | 
			
		
	
		
			
				
					|  |  |  |  |             elif int(msg['flag']) == 1: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.recv_file(msg['data']) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("Error") | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[x] Error") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def send_thread(self, conn): | 
			
		
	
		
			
				
					|  |  |  |  |         while True: | 
			
		
	
		
			
				
					|  |  |  |  |             flag: int = int(input("")) | 
			
		
	
		
			
				
					|  |  |  |  |             if flag == 0: | 
			
		
	
		
			
				
					|  |  |  |  |                 data = input("Enter data to send: ") | 
			
		
	
		
			
				
					|  |  |  |  |                 data = input("[-] Enter data to send: ") | 
			
		
	
		
			
				
					|  |  |  |  |                 msg = {"flag": 0, "data": data} | 
			
		
	
		
			
				
					|  |  |  |  |                 msg = json.dumps(msg).encode("utf-8") | 
			
		
	
		
			
				
					|  |  |  |  |                 self.send_data(conn, msg) | 
			
		
	
		
			
				
					|  |  |  |  |             elif flag == 1: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[+] Calling file transfer module...") | 
			
		
	
		
			
				
					|  |  |  |  |                 # file_name = input("Enter file name to send: ") | 
			
		
	
		
			
				
					|  |  |  |  |                 self.send_file(conn) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("Error,plesae enter 0 to send data, or 1 to send file.") | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[x] Error,plesae enter 0 to send data, or 1 to send file.") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def send_data(self, conn, data): | 
			
		
	
		
			
				
					|  |  |  |  |         conn.sendall(data) | 
			
		
	
	
		
			
				
					|  |  |  | @ -82,8 +83,6 @@ class recver_net(): | 
			
		
	
		
			
				
					|  |  |  |  |         return data.decode() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def recv_file(self, data): | 
			
		
	
		
			
				
					|  |  |  |  |         print(data) | 
			
		
	
		
			
				
					|  |  |  |  |         print("+++++++++++++++++++++++++++") | 
			
		
	
		
			
				
					|  |  |  |  |         letter: Letter = json_to_obj(data) | 
			
		
	
		
			
				
					|  |  |  |  |         recv.handleLetter(letter) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -92,13 +91,13 @@ class recver_net(): | 
			
		
	
		
			
				
					|  |  |  |  |         while True: | 
			
		
	
		
			
				
					|  |  |  |  |             try: | 
			
		
	
		
			
				
					|  |  |  |  |                 client = socket.socket()  # 定义协议类型,相当于生命socket类型,同时生成socket连接对象 | 
			
		
	
		
			
				
					|  |  |  |  |                 client.connect(('127.0.0.1', 8424)) | 
			
		
	
		
			
				
					|  |  |  |  |                 print("Connected...") | 
			
		
	
		
			
				
					|  |  |  |  |                 print("if you want to send data, enter 0, if you want to send file, enter 1.") | 
			
		
	
		
			
				
					|  |  |  |  |                 client.connect((self.client_host, self.client_port)) | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[*] Connected...") | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[*] if you want to send data, enter 0, if you want to send file, enter 1.") | 
			
		
	
		
			
				
					|  |  |  |  |                 sleep(1) | 
			
		
	
		
			
				
					|  |  |  |  |                 break | 
			
		
	
		
			
				
					|  |  |  |  |             except socket.error: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("Waiting for ...") | 
			
		
	
		
			
				
					|  |  |  |  |                 print("[*] Waiting for ...") | 
			
		
	
		
			
				
					|  |  |  |  |         # 加入线程 | 
			
		
	
		
			
				
					|  |  |  |  |         threading.Thread(target=self.recver_thread, ).start() | 
			
		
	
		
			
				
					|  |  |  |  |         threading.Thread(target=self.send_thread, args=(client,)).start() | 
			
		
	
	
		
			
				
					|  |  |  | @ -106,8 +105,31 @@ class recver_net(): | 
			
		
	
		
			
				
					|  |  |  |  |     def run(self): | 
			
		
	
		
			
				
					|  |  |  |  |         threading.Thread(target=self.main).start() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def input_verify(): | 
			
		
	
		
			
				
					|  |  |  |  |     while True: | 
			
		
	
		
			
				
					|  |  |  |  |         try: | 
			
		
	
		
			
				
					|  |  |  |  |             port = int(input("[*] Enter to the listen port: ")) | 
			
		
	
		
			
				
					|  |  |  |  |             break | 
			
		
	
		
			
				
					|  |  |  |  |         except ValueError: | 
			
		
	
		
			
				
					|  |  |  |  |             print("[x] Error, please enter a valid port number.") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     while True: | 
			
		
	
		
			
				
					|  |  |  |  |         addr = input("[*] Enter the address to connect to(127.0.0.1:8424): ") | 
			
		
	
		
			
				
					|  |  |  |  |         if ':' in addr: | 
			
		
	
		
			
				
					|  |  |  |  |             client_host, client_port = addr.split(":") | 
			
		
	
		
			
				
					|  |  |  |  |             if client_host and client_port.isdigit(): | 
			
		
	
		
			
				
					|  |  |  |  |                 client_port = int(client_port) | 
			
		
	
		
			
				
					|  |  |  |  |                 if 0 <= client_port <= 65535:  # 检查端口范围 | 
			
		
	
		
			
				
					|  |  |  |  |                     break  # 输入有效,跳出循环 | 
			
		
	
		
			
				
					|  |  |  |  |                 else: | 
			
		
	
		
			
				
					|  |  |  |  |                     print("Port must be between 0 and 65535.") | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 print("Invalid address format. Please enter in the format 'host:port'.") | 
			
		
	
		
			
				
					|  |  |  |  |         else: | 
			
		
	
		
			
				
					|  |  |  |  |             print("Invalid address format. Please enter in the format 'host:port'.") | 
			
		
	
		
			
				
					|  |  |  |  |     return port, client_host, client_port | 
			
		
	
		
			
				
					|  |  |  |  | # test | 
			
		
	
		
			
				
					|  |  |  |  | if __name__ == '__main__': | 
			
		
	
		
			
				
					|  |  |  |  |     a = recver_net() | 
			
		
	
		
			
				
					|  |  |  |  |     port, client_host, client_port = input_verify() | 
			
		
	
		
			
				
					|  |  |  |  |     a = recver_net(port, client_host, client_port) | 
			
		
	
		
			
				
					|  |  |  |  |     a.run() | 
			
		
	
	
		
			
				
					|  |  |  | 
 |