You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
88 lines
2.6 KiB
import hashlib
|
|
import selectors
|
|
import socket
|
|
import threading
|
|
from time import sleep
|
|
|
|
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)
|
|
self.server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.server.bind(('127.0.0.1', 8424))
|
|
self.server.listen(10)
|
|
def run(self):
|
|
while True:
|
|
try:
|
|
client = socket.socket() # 定义协议类型,相当于生命socket类型,同时生成socket连接对象
|
|
client.connect(('127.0.0.1', 8425))
|
|
print("Connected to recver.")
|
|
sleep(1)
|
|
break
|
|
except socket.error:
|
|
print("正在连接中...")
|
|
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(self.server)
|
|
print("[*]", data.decode())
|
|
elif flag == 0:
|
|
self.send_file(client, input("Enter file name: "))
|
|
elif flag==3:
|
|
self.recv_file(self.server)
|
|
|
|
client.close()
|
|
|
|
def send_data(self, conn, data):
|
|
conn.sendall(data.encode("utf-8"))
|
|
def send_file(self, conn, file_name):
|
|
file_name="C:\\Users\\a\\Desktop\\FileSecureTransfer\\recv\\1.txt"
|
|
with open(file_name, 'rb') as file:
|
|
conn.sendall(file.read())
|
|
conn.close()
|
|
print("File sent successfully.")
|
|
def recv_data(self,conn):
|
|
con, addr = conn.accept()
|
|
data = con.recv(1024)
|
|
if not data:
|
|
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.")
|
|
#test
|
|
if __name__ == '__main__':
|
|
a=sender()
|
|
a.run() |