接受发消息框架

recyvan 1 year ago
parent 375642c42d
commit 57178df877

@ -1,5 +1,10 @@
from entity.Letter import Letter
def getLetter():
# 阻塞自身 从指定端口获取信件
#
@ -9,4 +14,81 @@ def getLetter():
pass
def handleLetter(letter:Letter):
pass
pass
import socket
from entity.Letter import Letter
from socketserver import ThreadingTCPServer, StreamRequestHandler
def main():
# 用户输入各种数据填充letter字段
# 获取用户的公私钥对进行签名
# 使用对方的公钥进行加密
# 发送信件
pass
def sendLetter(letter: Letter, target="192.168.195.162:8426"):
# 向目标ip和端口发送指定的信件
pass
class sender(StreamRequestHandler):
def handle(self):
conn: socket.socket = self.request
try:
while True:
data = conn.recv(1024)
if not data:
break
elif data.decode() == "quit":
break
elif data ==b'0':
self.recv_file()
# 解析信件
msg = input("请输入要发送的消息(输入quit退出)")
self.send_data(conn,msg)
except Exception as e:
print(e)
def send_data(self, conn, data):
conn.sendall(data.encode("utf-8"))
def send_file(self,recver_socket,file_name):
with open(file_name, 'rb') as file:
recver_socket.sendall(file.read())
recver_socket.close()
print("File sent successfully.")
def recv_data(self):
data = self.request.recv(1024)
if not data:
return None
print(data.decode())
return data.decode()
def recv_file(self):
with open("3.txt", 'wb') as file:
print("Receiving file data...")
while True:
# 接收数据块
data = self.request.recv(2048)
if not data:
break # 如果没有更多数据则退出循环
file.write(data) # 写入数据到文件
print("File received successfully.")
#test
if __name__ == '__main__':
# main()
server = ThreadingTCPServer(('127.0.0.1', 8425), sender)
server.serve_forever()

@ -1,11 +1,64 @@
import hashlib
import selectors
import socket
import threading
import select
from entity.Letter import Letter
def main():
# 用户输入各种数据填充letter字段
# 获取用户的公私钥对进行签名
# 使用对方的公钥进行加密
# 发送信件
pass
def sendLetter(letter: Letter, target="192.168.195.162:8426"):
# 向目标ip和端口发送指定的信件
pass
class sender():
def __init__(self):
self.file_name=""
self.flle_size=0
self.file_sha256=""
self.addr=("",0)
def run(self):
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
client.connect(('127.0.0.1', 8425))
while True:
flag: int = int(input("Enter 0 or 1:"))
if flag == 1:
msg = input("[*]").strip()
if len(msg) == 0: continue
self.send_data(client, msg)
data = self.recv_data(client)
print("[*]", data.decode())
elif flag == 0:
client.sendall(b'0')
self.send_file(client, input("Enter file name: "))
client.close()
def send_data(self, conn, data):
conn.sendall(data.encode("utf-8"))
def send_file(self,recver_socket,file_name):
file_name="C:\\Users\\a\\Desktop\\FileSecureTransfer\\recv\\1.txt"
with open(file_name, 'rb') as file:
recver_socket.sendall(file.read())
recver_socket.close()
print("File sent successfully.")
def recv_data(self,conn):
data = conn.recv(1024)
if not data:
return None
# print(data.decode())
return data.decode()
#test
if __name__ == '__main__':
a=sender()
a.run()
Loading…
Cancel
Save