更新一下

sender_okToCheck
recyvan 7 months ago
parent a67a749bb3
commit b2a6196dbb

@ -1,9 +1,44 @@
import json
class Letter: class Letter:
sign = "计算得到" sign = "计算得到"
encryptType = "SM4_GCM" encryptType = "SM4_GCM"
encryptKey = "计算获得" # recvPubKey 加密后的 对称加密秘钥 数据 encryptKey = "计算获得" # recvPubKey 加密后的 对称加密秘钥 数据
recvPubKey = "" recvPubKey = ""
senderPubKey = "" senderPubKey = ""
fileName = "" fileName = ""
fileBase64 = "" fileBase64 = ""
def to_dict(self):
return {
"sign": self.sign,
"encryptType": self.encryptType,
"encryptKey": self.encryptKey,
"recvPubKey": self.recvPubKey,
"senderPubKey": self.senderPubKey,
"fileName": self.fileName,
"fileBase64": self.fileBase64
}
def json_to_obj(json_str):
new_obj= Letter()
new_obj.sign = json_str["sign"]
new_obj.encryptType = json_str["encryptType"]
new_obj.encryptKey = json_str["encryptKey"]
new_obj.recvPubKey = json_str["recvPubKey"]
new_obj.senderPubKey = json_str["senderPubKey"]
new_obj.fileName = json_str["fileName"]
new_obj.fileBase64 = json_str["fileBase64"]
return new_obj
# test code
if __name__ == '__main__':
letter = Letter()
# print(json.dumps(letter.to_dict(), indent=1))
json_dict = json.loads(json.dumps(letter.to_dict()))
print(json_dict.__dir__)

@ -7,6 +7,10 @@ from time import sleep
import select import select
from entity.Letter import Letter, json_to_obj
import recv
from sender import sender
# from entity.Letter import Letter # from entity.Letter import Letter
@ -23,7 +27,7 @@ import select
# # 向目标ip和端口发送指定的信件 # # 向目标ip和端口发送指定的信件
# pass # pass
class recver(): class recver_net():
def __init__(self): def __init__(self):
self.file_name = "" self.file_name = ""
self.flle_size = 0 self.flle_size = 0
@ -39,7 +43,7 @@ class recver():
data = conn.recv(10240) data = conn.recv(10240)
msg = json.loads(data.decode()) msg = json.loads(data.decode())
if int(msg['flag']) == 0: if int(msg['flag']) == 0:
print("\nhaved received data:"+msg["data"]+"\n") print("\nhaved received data:" + msg["data"])
elif int(msg['flag']) == 1: elif int(msg['flag']) == 1:
self.recv_file(msg['data']) self.recv_file(msg['data'])
else: else:
@ -54,18 +58,18 @@ class recver():
msg = json.dumps(msg).encode("utf-8") msg = json.dumps(msg).encode("utf-8")
self.send_data(conn, msg) self.send_data(conn, msg)
elif flag == 1: elif flag == 1:
file_name = input("Enter file name to send: ") # file_name = input("Enter file name to send: ")
self.send_file(conn, file_name) self.send_file(conn)
else: else:
print("Error,plesae enter 0 to send data, or 1 to send file.") print("Error,plesae enter 0 to send data, or 1 to send file.")
def send_data(self, conn, data): def send_data(self, conn, data):
conn.sendall(data) conn.sendall(data)
def send_file(self, conn, file_name): def send_file(self, conn):
data = "dawwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" self.letter: Letter = sender.main()
msg = {"flag": 1, "data": data} letter = self.letter.to_dict()
msg = {"flag": 1, "data": letter}
msg = json.dumps(msg).encode("utf-8") msg = json.dumps(msg).encode("utf-8")
conn.sendall(msg) conn.sendall(msg)
@ -76,18 +80,25 @@ class recver():
return None return None
# print(data.decode()) # print(data.decode())
return data.decode() return data.decode()
def recv_file(self, data):
print(data)
print("+++++++++++++++++++++++++++")
letter: Letter = json_to_obj(data)
recv.handleLetter(letter)
def main(self): def main(self):
while True: while True:
try: try:
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象 client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
client.connect(('127.0.0.1', 8424)) client.connect(('127.0.0.1', 8424))
print("Connected to recver.") 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:
print("Waiting for recver...") print("Waiting for ...")
# 加入线程 # 加入线程
threading.Thread(target=self.recver_thread, ).start() threading.Thread(target=self.recver_thread, ).start()
threading.Thread(target=self.send_thread, args=(client,)).start() threading.Thread(target=self.send_thread, args=(client,)).start()
@ -95,14 +106,8 @@ class recver():
def run(self): def run(self):
threading.Thread(target=self.main).start() threading.Thread(target=self.main).start()
def recv_file(self, data):
with open("3.txt", 'wb') as file:
print("Receiving file data...")
file.write(data) # 写入数据到文件
print("File received successfully.")
# test # test
if __name__ == '__main__': if __name__ == '__main__':
a = recver() a = recver_net()
a.run() a.run()

@ -4,11 +4,13 @@ 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 select
import sender
from recv import recv
# from entity.Letter import Letter
# from entity.Letter import Letter
# def main(): # def main():
@ -23,94 +25,84 @@ import select
# # 向目标ip和端口发送指定的信件 # # 向目标ip和端口发送指定的信件
# pass # pass
class sender(): class sender_net():
def __init__(self): def __init__(self):
self.file_name="" self.letter = Letter()
self.flle_size=0 self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.file_sha256=""
self.addr=("",0)
self.server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(('127.0.0.1', 8424)) self.server.bind(('127.0.0.1', 8424))
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()
data = conn.recv(10240) data = conn.recv(10240)
msg = json.loads(data.decode())
msg=json.loads(data.decode())
if int(msg['flag']) == 0: if int(msg['flag']) == 0:
print("\nhaved received data:"+msg["data"]+"\n") print("\nhaved received data:" + msg["data"])
elif int(msg['flag']) == 1: elif int(msg['flag']) == 1:
self.recv_file(msg['data']) self.recv_file(msg['data'])
else: else:
print("Error") print("Error")
def send_thread(self,conn): def send_thread(self, conn):
while True: while True:
flag:int=int(input()) flag: int = int(input())
if flag==0: if flag == 0:
data=input("Enter data to send: ") data = input("Enter data to send: ")
msg={"flag":0,"data":data} msg = {"flag": 0, "data": data}
msg=json.dumps(msg).encode("utf-8") msg = json.dumps(msg).encode("utf-8")
self.send_data(conn,msg) self.send_data(conn, msg)
elif flag==1: elif flag == 1:
file_name=input("Enter file name to send: ") # file_name = input("Enter file name to send: ")
self.send_file(conn,file_name) self.send_file(conn)
else: else:
print("Error,plesae enter 0 to send data, or 1 to send file.") print("Error,plesae enter 0 to send data, or 1 to send file.")
def send_data(self, conn, msg): def send_data(self, conn, msg):
conn.sendall(msg) conn.sendall(msg)
def send_file(self, conn, file_name):
data = "dawwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" def send_file(self, conn):
msg={"flag":1,"data":data} self.letter: Letter = sender.main()
msg=json.dumps(msg).encode("utf-8") letter = self.letter.to_dict()
msg = {"flag": 1, "data": letter}
print(letter)
msg = json.dumps(msg).encode("utf-8")
conn.sendall(msg) conn.sendall(msg)
def recv_data(self,conn): def recv_data(self, conn):
con, addr = conn.accept() con, addr = conn.accept()
data = con.recv(1024) data = con.recv(1024)
if not data: if not data:
return None return None
# print(data.decode()) # print(data.decode())
return data.decode() return data.decode()
# def recv_file(self,conn):
# con, addr = conn.accept() def recv_file(self, data):
# with open("3.txt", 'wb') as file: letter: Letter = json_to_obj(data)
# print("Receiving file data...") recv.handleLetter(letter)
# while True:
# # 接收数据块
# data = con.recv(2048)
# if not data:
# break # 如果没有更多数据则退出循环
# file.write(data) # 写入数据到文件
# print("File received successfully.")
def recv_file(self,data):
with open("3.txt", 'wb') as file:
print("Receiving file data...")
file.write(data.encode("utf-8")) # 写入数据到文件
print("File received successfully.")
def run(self): def run(self):
threading.Thread(target=self.main).start() threading.Thread(target=self.main).start()
def main(self): def main(self):
while True: while True:
try: try:
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象 client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
client.connect(('127.0.0.1', 8425)) client.connect(('127.0.0.1', 8425))
print("Connected to recver.") 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:
print("Waiting for recver...") print("Waiting for ...")
#加入线程 #加入线程
threading.Thread(target=self.recver_thread, ).start() threading.Thread(target=self.recver_thread, ).start()
threading.Thread(target=self.send_thread,args=(client,)).start() threading.Thread(target=self.send_thread, args=(client,)).start()
#test #test
if __name__ == '__main__': if __name__ == '__main__':
a=sender() a = sender_net()
a.run() a.run()

Loading…
Cancel
Save