20242322 2024-2025-2 《Python程序设计》实验三报告
20242322 2024-2025-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级:2423
姓名:郭智汶
学号:20242322
实验教师:王志强
实验日期:2025年4月16日
必修/选修:公选课
一、实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
具体要求如下:
1.创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
2.要求包含文件的基本操作,例如打开和读写操作。
3.要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
4.程序代码托管到码云。
二、实验过程及结果
(一)了解AES加解密算法
(二)学习Python中的文件操作
1.运用open()函数打开文件,依据需求选择合适的打开模式。
2.利用write()方法写入文件内容;
3.使用with语句来管理文件能确保文件在使用完毕后自动关闭。
(三)编写服务端Server代码
import socket
s_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
address = ('localhost', 8082) # 更改为8082端口
s_socket.bind(address)
s_socket.listen(5)
print("服务器正在监听 8082 端口...")
while True:
c_socket, c_address = s_socket.accept()
print("接收到来自 {} 的连接".format(c_address))
try:
while True:
data = c_socket.recv(1024)
if not data:
break
print("客户端说: {}".format(data.decode('utf-8')))
c_socket.send("你好".encode())
finally:
c_socket.close()
(四)编写客户端Client代码
import socket
c_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8082) # 更改为8082端口
try:
c_socket.connect(server_address)
print("连接成功")
c_socket.send("你好呀".encode())
response = c_socket.recv(1024)
print("服务器回复:", response.decode('utf-8'))
except socket.error as e:
print("连接失败:", e)
finally:
c_socket.close()
server_socket.listen(5)
print("开始监听....", address)
(五)运行结果
(六)上传Gitee
三、实验过程中遇到的问题和解决过程
问题:Server程序与Client程序运行时,出现报错:
问题解决方案:把地址换成localhost