|
|
|
@ -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()
|
|
|
|
|