20243113应超群 2025-4-16《Python程序设计》实验三报告
20243113 2025-4-16 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2431
姓名: 应超群
学号:20243113
实验教师:王志强
实验日期:2025年4月16日
必修/选修: 公选课
一. 实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
二. 实验过程及结果
1. 创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
用于本机连接演示的代码如下
点击查看 服务端 代码
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s_address = ("192.168.8.1",3113) #应超群的IP
s_address = ('localhost', 3113)
server_socket.bind(s_address)
server_socket.listen(1)
print(f"监听{s_address}")
client_socket, address = server_socket.accept()
print(f"接收到{address}的连接")
while True:
data_client = client_socket.recv(1024).decode("utf-8")
print("客户端:", data_client)
data_server = input("服务端:").encode("utf-8")
client_socket.send(data_server)
if data_server.decode("utf-8") == "exit":
break
client_socket.close()
server_socket.close()
点击查看 客户端 代码
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#client_socket.connect(('192.168.8.84', 3109)) #董洪瑞的ip
client_socket.connect(('localhost', 3113))
while True:
data_client = input("客户端:").encode("utf-8")
client_socket.send(data_client)
if data_client.decode("utf-8") == "exit":
break
data_server = client_socket.recv(1024).decode("utf-8")
print("服务端:", data_server)
client_socket.close()
结果如下


2. 要求发送方加密后并传输;接收方收到密文并解密。
下面是附带加密后的代码
点击查看 服务端 代码
import socket
KEY = 0xAA
def jiami(data,key):
return bytes([b^key for b in data])
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s_address = ("192.168.8.1",3113) #应超群的IP
#s_address = ('localhost', 3113)
server_socket.bind(s_address)
server_socket.listen(1)
print(f"监听{s_address}")
client_socket, address = server_socket.accept()
print(f"接收到{address}的连接")
while True:
jiamidata_client = client_socket.recv(1024)
data_client = jiami(jiamidata_client,KEY).decode("utf-8")
print("客户端:", data_client)
data_server = input("服务端:").encode("utf-8")
jiamidata_server = jiami(data_server,KEY)
client_socket.send(jiamidata_server)
if data_server.decode("utf-8") == "exit":
break
client_socket.close()
server_socket.close()
点击查看 客户端 代码
import socket
KEY = 0xAA
def jiami(data,key):
return bytes([b^key for b in data])
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.8.84', 3109)) #董洪瑞的ip
#client_socket.connect(('localhost', 3113))
while True:
data_client = input("客户端:").encode("utf-8")
jiamidata_client = jiami(data_client,KEY)
client_socket.send(jiamidata_client)
if data_client.decode("utf-8") == "exit":
break
jiamidata_server = client_socket.recv(1024)
data_server = jiami(jiamidata_server,KEY).decode("utf-8")
print("服务端:", data_server)
client_socket.close()
作为服务端与同学建立连接结果

作为客户端与同学建立连接结果

3. 程序代码托管到码云。
三. 实验过程中遇到的问题和解决过程
- 问题1:加密操作不清楚
- 问题1解决方案:通过询问deepseek,选择使用异或操作加密,[b ^ key for b in data],对 data 中的每一个字节 b 执行异或运算 b ^ key,加密后重复异或操作即可解密(要知道key)
- 问题2:开始的时候和同学联机一直连不上
- 问题2解决方案:发现ip地址搞错了,重新获取IP地址,解决了连接问题
其他(感悟、思考等)
通过socket,可以实现局域网通信,对话。这就说明,可以结合pygame实现局域网联机游戏。同时,通过加密操作,我更加深入的认识密码,明白保密的重要性



浙公网安备 33010602011771号