更新一下

sender_okToCheck
recyvan 3 months ago
parent a67a749bb3
commit b2a6196dbb

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

@ -4,11 +4,13 @@ import selectors
import socket
import threading
from time import sleep
from entity.Letter import Letter,json_to_obj
import select
import sender
from recv import recv
# from entity.Letter import Letter
# from entity.Letter import Letter
# def main():
@ -23,24 +25,21 @@ import select
# # 向目标ip和端口发送指定的信件
# pass
class sender():
class sender_net():
def __init__(self):
self.file_name=""
self.flle_size=0
self.file_sha256=""
self.addr=("",0)
self.letter = Letter()
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(('127.0.0.1', 8424))
self.server.listen(10)
def recver_thread(self):
while True:
conn, addr = self.server.accept()
data = conn.recv(10240)
msg = json.loads(data.decode())
if int(msg['flag']) == 0:
print("\nhaved received data:"+msg["data"]+"\n")
print("\nhaved received data:" + msg["data"])
elif int(msg['flag']) == 1:
self.recv_file(msg['data'])
else:
@ -55,19 +54,19 @@ class sender():
msg = json.dumps(msg).encode("utf-8")
self.send_data(conn, msg)
elif flag == 1:
file_name=input("Enter file name to send: ")
self.send_file(conn,file_name)
# 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.")
def send_data(self, conn, msg):
conn.sendall(msg)
def send_file(self, conn, file_name):
data = "dawwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
msg={"flag":1,"data":data}
def send_file(self, conn):
self.letter: Letter = sender.main()
letter = self.letter.to_dict()
msg = {"flag": 1, "data": letter}
print(letter)
msg = json.dumps(msg).encode("utf-8")
conn.sendall(msg)
@ -78,39 +77,32 @@ class sender():
return None
# print(data.decode())
return data.decode()
# def recv_file(self,conn):
# con, addr = conn.accept()
# with open("3.txt", 'wb') as file:
# print("Receiving file data...")
# 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.")
letter: Letter = json_to_obj(data)
recv.handleLetter(letter)
def run(self):
threading.Thread(target=self.main).start()
def main(self):
while True:
try:
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
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.")
sleep(1)
break
except socket.error:
print("Waiting for recver...")
print("Waiting for ...")
#加入线程
threading.Thread(target=self.recver_thread, ).start()
threading.Thread(target=self.send_thread, args=(client,)).start()
#test
if __name__ == '__main__':
a=sender()
a = sender_net()
a.run()
Loading…
Cancel
Save