20253431 2025-2026-2 《Python程序设计》实验三报告

20253431 2025-2026-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2534
姓名: 吕俊孜
学号:20253431
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

(一)实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

(二)实验要求

注意事项:

每人必须做一次客户端和一次服务端,且要和队友(标注学号姓名)互相通信。

要求1:

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和明文。

(3)程序代码托管到码云。

(4)添加文件操作,有加分。(可选项)

要求2:使用LLM生成一个带图形界面的程序

(1)分析关键代码的功能和使用方法

(2)分析生成程序的优点

(3)给出运行过程和结果截图

(4)程序代码托管到码云。

注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

2. 实验过程及结果

基础通信程序实现:(TCP Socket + 凯撒密码加密)

实现思路:

  1. 通信协议:选择TCP协议,保证消息可靠传输。

  2. 加密方式:采用凯撒密码(Caesar Cipher),密钥为随机生成的1~30之间的整数,服务端生成密钥并发送给客户端。

  3. 交互流程:

    服务端启动,监听指定端口(例如8888),等待客户端连接。

    客户端连接服务端IP和端口。

    服务端生成随机密钥并发送给客户端。

    双方输入消息,加密后发送,接收方解密并同时输出明文和密文。

  4. 异常处理:捕获连接错误、解密失败等异常,避免程序崩溃。

代码方面:

加解密函数核心逻辑:

def encrypt(text, key):
    result = ""
    for ch in text:
        if ch.isalpha():
            shifted = ord(ch) + key
            if ch.islower():
                if shifted > ord('z'):
                    shifted -= 26
            elif ch.isupper():
                if shifted > ord('Z'):
                    shifted -= 26
            result += chr(shifted)
        else:
            result += ch
    return result

解密函数只需将key替换为(26 - key)即可。

与队友联调过程:

队友:20253421林资恒

测试步骤:

  1. 两人连接同一手机热点,确认IP地址在同一网段。

  2. 一人启动服务端,另一人客户端输入服务端IP和端口进行连接。

  3. 轮流发送中英文混合消息,观察加密传输和解密显示是否正确。

运行截图:

AI版图形界面版本程序

我选择使用大语言模型豆包生成程序

功能分析

1.一对一会话:服务端启动后,只等待一个客户端连接,双方进行一对一聊天。

2.简单加密传输:所有聊天内容在发送前会进行“凯撒加密”(每个字符的Unicode码点加上一个密钥),接收方再减去密钥解密。网络上传输的是密文。

3.图形化界面:使用Python标准库tkinter实现,操作直观,无需命令行。

4.本地日志记录:客户端和服务端各自将聊天记录(明文和密文)保存到本地的log_client.txt和log_server.txt文件中。

优点分析:

1.图形界面与网络分离:使用了多线程(threading),将耗时的网络连接和接收消息操作放在后台线程中,避免了界面“卡死”。

2.日志持久化:自动记录聊天内容和时间戳,这是一个很实用的功能。

3.密钥协商机制:服务端动态生成密钥,每次连接会话都使用不同的密钥,比写死在代码中要安全一点点。

4.简单的应用层握手:通过发送"check"和回复"OK"来验证密钥是否正确,保证了通信的基本前提。

运行过程与截图:

  1. 先运行server_ai.py,点击“启动服务”按钮。
  2. 再运行client_ai.py,输入服务端IP(如192.168.43.1)和端口(8888),点击“连接”。
  3. 双方在输入框中输入消息,点击“发送”,聊天区域显示明文和密文对。
  4. 程序自动记录聊天内容到文件。

运行截图如下:
ai代码运行图片

代码托管:

3. 实验过程中遇到的问题和解决过程

  • 问题1:和同学通信连不上,我能连他但是他不能连我
  • 问题1解决方案:关闭了对方的防火墙

其他(感悟、思考等)

感觉网络通信还是很有难度的,平日里似很简单的qq聊天背后也蕴含了很多复杂的代码

参考资料

posted @ 2026-04-27 21:53  第十一世的狐  阅读(27)  评论(0)    收藏  举报