Compare commits

...

2 Commits

14
.gitignore vendored

@ -1,12 +1,4 @@
/.idea /.idea
/tool/asymmetric/private.pem /dist/
/tool/asymmetric/public.pem /main.spec
/tool/public.pem /build/
/tool/private.pem
/private.pem
/public.pem
/sender/private.pem
/recv/private.pem
/recv/public.pem
/sender/public.pem
/recv/交给你了

@ -1,5 +1,7 @@
import pyfiglet # 程序greet import pyfiglet # 程序greet
from sender import sender_net
# 程序greet # 程序greet
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
greet = pyfiglet.figlet_format("File Secure Transfer", font="slant" , width=250) greet = pyfiglet.figlet_format("File Secure Transfer", font="slant" , width=250)
@ -7,4 +9,9 @@ print(greet)
print(" <For Secure And Fast File Transfer>") print(" <For Secure And Fast File Transfer>")
author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->" author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->"
print(author) print(author)
print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
if __name__ == '__main__':
port, client_host, client_port = sender_net.input_verify()
a = sender_net.sender_net(port, client_host, client_port)
a.run()

@ -1,12 +1,11 @@
import hashlib import ipaddress
import json import json
import selectors
import socket import socket
import threading import threading
from time import sleep from time import sleep
from entity.Letter import Letter,json_to_obj
import select
import sender import sender
from entity.Letter import Letter, json_to_obj
from recv import recv from recv import recv
@ -26,16 +25,17 @@ from recv import recv
# pass # pass
class sender_net(): class sender_net():
def __init__(self,port=8424,client_host='127.0.0.1',client_port=8424): def __init__(self, port=8424, client_host='127.0.0.1', client_port=8424):
self.client_host = client_host self.client_host = client_host
self.client_port = client_port self.client_port = client_port
self.letter = Letter() self.letter = Letter()
self.port=port self.port = port
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
self.server.bind(('0.0.0.0', self.port)) # 设置socket选项以允许IPv4映射到IPv6
self.server.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
self.server.bind(('::', self.port))
self.server.listen(10) self.server.listen(10)
def recver_thread(self): def recver_thread(self):
while True: while True:
conn, addr = self.server.accept() conn, addr = self.server.accept()
@ -66,7 +66,6 @@ class sender_net():
except ValueError: except ValueError:
print("[x] Error, please enter a valid number.") print("[x] Error, please enter a valid number.")
def send_data(self, conn, msg): def send_data(self, conn, msg):
conn.sendall(msg) conn.sendall(msg)
@ -90,25 +89,30 @@ class sender_net():
letter: Letter = json_to_obj(data) letter: Letter = json_to_obj(data)
recv.handleLetter(letter) recv.handleLetter(letter)
def run(self): def run(self):
threading.Thread(target=self.main).start() a = threading.Thread(target=self.main)
a.start()
a.join()
def main(self): def main(self):
while True: while True:
try: try:
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象 client = socket.create_connection(
client.connect((self.client_host, self.client_port)) (self.client_host, self.client_port)) # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
print(" [*] Connected...") print(" [*] Connected...")
print("[*] if you want to send data, enter 0, if you want to send file, enter 1.") print("[*] if you want to send data, enter 0, if you want to send file, enter 1.")
sleep(1) sleep(1)
break break
except socket.error: except socket.error as e:
print(e)
print("[*] Waiting for ...") print("[*] Waiting for ...")
#加入线程 # 加入线程
threading.Thread(target=self.recver_thread, ).start() a = threading.Thread(target=self.recver_thread, )
threading.Thread(target=self.send_thread, args=(client,)).start() b = threading.Thread(target=self.send_thread, args=(client,))
a.start()
b.start()
a.join()
b.join()
def input_verify(): def input_verify():
@ -121,22 +125,35 @@ def input_verify():
while True: while True:
addr = input("[*] Enter the address to connect to(127.0.0.1:8424): ") addr = input("[*] Enter the address to connect to(127.0.0.1:8424): ")
# 检查输入是否包含冒号
if ':' in addr: if ':' in addr:
client_host, client_port = addr.split(":") try:
if client_host and client_port.isdigit(): # 分割地址和端口
client_port = int(client_port) client_host, client_port = addr.rsplit(':', 1)
if 0 <= client_port <= 65535: # 检查端口范围 # 验证端口是否为数字
break # 输入有效,跳出循环 if client_port.isdigit():
client_port = int(client_port)
# 检查端口范围
if 0 <= client_port <= 65535:
# 尝试解析IP地址
try:
# 使用ipaddress模块来检查地址的有效性
ipaddress.ip_address(client_host)
break # 输入有效,跳出循环
except ValueError:
print("Invalid IP address format.")
else:
print("Port must be between 0 and 65535.")
else: else:
print("Port must be between 0 and 65535.") print("Port number is not a valid integer.")
else: except ValueError:
print("Invalid address format. Please enter in the format 'host:port'.") print("Invalid address format. Please enter in the format 'host:port'.")
else: else:
print("Invalid address format. Please enter in the format 'host:port'.") print("Invalid address format. Please enter in the format 'host:port'.")
return port, client_host, client_port return port, client_host, client_port
#test # test
if __name__ == '__main__': if __name__ == '__main__':
port, client_host, client_port = input_verify() port, client_host, client_port = input_verify()
a = sender_net(port, client_host, client_port) a = sender_net(port, client_host, client_port)

Loading…
Cancel
Save