20242421 2024-2025-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2424
姓名: 张骜阳
学号:20242421
实验教师:王志强
实验日期:2025年4月16日
必修/选修: 选修课
1.实验内容
(1)创建服务端和客户端,服务端在特定端口监听多个客户请求。
(2)客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(3)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序。
(4)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(5)程序代码托管到码云。
2. 实验过程及结果
(1)创建服务端和客户端,服务端在特定端口监听多个客户请求。


(2)客户端和服务端通过Socket套接字(TCP/UDP)进行通信。



(3)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序。
server:
client:
(4)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。



(5)程序代码托管到码云。
client:
from cryptography.fernet import Fernet
import socket
with open('secret.key', 'rb') as key_file:
key = key_file.read()
cipher = Fernet(key)
def send_file(client_filename):
with open(client_filename, 'rb') as file:
original_file = file.read()
encrypted_data = cipher.encrypt(original_file)
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.43.134', 8080))
client_socket.send(encrypted_data)
print("文件已加密发送")
client_socket.close()
while True:
client_input = input("是否要发送文件Y/n:")
if client_input in ('Y', 'y'):
client_filename = input("请输入要发送的文件名")
send_file(client_filename)
elif client_input in ('N', 'n'):
print('''结束文件传输。
感谢使用。''')
break
else:
print("输入无效,请输入Y/n")
server:
from cryptography.fernet import Fernet
import socket
with open("secret.key", "rb") as key_file:
key = key_file.read()
cipher = Fernet(key)
def start_sever():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('192.168.43.59', 8080))
server_socket.listen(5)
print("服务器已启动,等待连接...")
while True:
client_socket,client_address = server_socket.accept()
print("收到来自{client_address}的连接".format(client_address=client_address))
encrypted_data = client_socket.recv(1024)
decrypted_data = cipher.decrypt(encrypted_data)
with open("received_file.txt","wb") as receive_file:
receive_file.write(decrypted_data)
print("文件接收并解密完成")
print(f"客户端说:{decrypted_data.decode("UTF-8")}")
client_socket.close()
start_sever()
3. 实验过程中遇到的问题和解决过程
- 问题1:无法使用crypto
- 问题1解决方案:将返回错误复制给AI,接着我发现我的解释器似乎出现了问题。我又按照AI给出的代码进行修改,并且在终端运行,在确认安装cryptography的情况下仍然无法运行。然后再尝试运行其他文件,包括之前的作业,却发现都无法运行并且得到的错误一样。我重启了pycharm但发现没改变。结果我最后偶然发现默认运行文件并不是当前文件,所以才导致了这些错误。
参考资料
无
浙公网安备 33010602011771号