From 24ea41aa92b6efafbcffeb9046db2728d37d6d0f Mon Sep 17 00:00:00 2001 From: pyj256ost <2940908360@qq.com> Date: Wed, 13 Dec 2023 19:56:22 +0800 Subject: [PATCH] ADD file via upload --- tcp_client.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tcp_client.py diff --git a/tcp_client.py b/tcp_client.py new file mode 100644 index 0000000..7d00ce6 --- /dev/null +++ b/tcp_client.py @@ -0,0 +1,79 @@ +import socket +import zipfile +import os + +def send_zip(HOST,PORT): + # 获取当前文件的绝对路径 + current_file_path = os.path.abspath(__file__) + + # 获取当前文件的目录路径 + current_directory = os.path.dirname(current_file_path) + + # 使用相对路径构建其他文件的路径 + file_path = os.path.join(current_directory, 'file.txt.encrypted') + encrypted_key_path = os.path.join(current_directory, 'encrypted_symmetric_key.bin') + Apub_key_path = os.path.join(current_directory, 'A_public.txt') + signature_path = os.path.join(current_directory, 'signature.txt') + output_zip_path = os.path.join(current_directory, 'encrypted_data.zip') + + # 创建一个 ZIP 文件 + with zipfile.ZipFile(output_zip_path, 'w') as zip_file: + # 将文件.txt添加到ZIP文件中 + zip_file.write(file_path, arcname='file.txt.encrypted') + + # 将A的公钥添加到ZIP文件中 + zip_file.write(Apub_key_path, arcname='A_public.txt') + + # 将加密后的对称密钥添加到ZIP文件中 + zip_file.write(encrypted_key_path, arcname='encrypted_symmetric_key.bin') + + # 将数字签名添加到ZIP文件中 + zip_file.write(signature_path, arcname='signature.txt') + + print("打包封装完成:", output_zip_path) + + # 设置服务器的IP地址和端口号 + # HOST = host + # PORT = port + + # 客户端连接服务器 + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket: + client_socket.connect((HOST, PORT)) + + # 读取要传输的文件 + with open(output_zip_path, 'rb') as file: + file_data = file.read() + + # 发送文件数据 + client_socket.sendall(file_data) + print("文件发送完成") + +def receive_Bpubkey(HOST,PORT): + # 设置服务器的IP地址和端口号 + # HOST = '10.34.52.156' + # PORT = 22222 + + # 创建一个socket对象 + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: + # 绑定IP和端口 + server_socket.bind((HOST, PORT)) + # 开始监听传入的连接 + server_socket.listen() + + print(f"等待客户端连接...") + conn, addr = server_socket.accept() # 接受客户端的连接 + print(f"已连接:{addr}") + + with conn: + # 从客户端接收数据 + file_data = conn.recv(1024) # 假设每次接收的数据大小为1024字节 + with open('B_public.txt', 'wb') as file: + while file_data: + file.write(file_data) + file_data = conn.recv(1024) + print("文件接收完成") + +# receive_Bpubkey() + +# send_zip() +