20253302 实验三《Python程序设计》实验报告

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

课程:《Python程序设计》
班级: 2533
姓名: 王紫晗
学号:20253302
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

此处填写实验的具体内容;
要求1:

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

  • (2)要求包含文件的基本操作,例如打开和读写操作。

  • (3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

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

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

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

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

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

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

2. 实验过程及结果

首先是跟着强哥一步一步地进行一个名为编写的代码,写的基本就是强哥的代码(


#服务端程序
import socket  #pip install socket

#创建TCP Socket对象(买了一台圣剑

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#办电话卡,叫127

HOST = "192.168.43.2" #"localhost"
PORT = 3302

#把电话卡插到手机上
server.bind((HOST, PORT))
server.listen(1)#最多1进程,1个人同时打电话

print("服务器。启动!等待客户连接。。。。")

while True:
    conn, addr = server.accept()
    print(f"已经连接好客户端:{addr}")


    #接收消息
    while True:
        data = conn.recv(1024).decode("utf-8")
        if not data:  # 客户端断开
            print("客户端断开连接")
            break

        #写到文件里
        with open("rec.txt", "a", encoding="utf-8") as f:
            f.write("客户端: " + data + "\n")
        print(f"客户端的密文是:{data.encode("utf-8")}")
        print(f"客户端:{data}")

        send_msg=input("我:")
        conn.send(send_msg.encode("utf-8"))
        print(f"你输入的密文是:{send_msg.encode("utf-8")}")

        # 记录发出的消息
        with open("rec.txt", "a", encoding="utf-8") as f:
            f.write("我: " + send_msg + "\n")

    conn.close()

server.close()

#客户端程序

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#TCP

HOST = "192.168.43.12"
PORT = 3312
client.connect((HOST, PORT))

print("已连接服务!输入 exit 退出")

while True:
    # 发送数据
    send_msg = input("我:")
    client.send(send_msg.encode("utf-8"))
    print(f"密文是{send_msg.encode("utf-8")}")

    # 将发送的消息写入
    with open("sent.txt", "a", encoding="utf-8") as f:
        f.write("我: " + send_msg + "\n")

    if send_msg.lower() == "exit":
        print("客户端断开")
        break

    # 接收数据
    data = client.recv(1024).decode("utf-8")
    if not data:
        break

    # 将接收到的消息写入
    with open("sent.txt", "a", encoding="utf-8") as f:
        f.write("服务端: " + data + "\n")
    print(f"服务端给的密文是:{data.encode("utf-8")}")
    print(f"服务端说:{data}")

client.close()

下面是我作为服务端进行操作,与20253312胡宸轩组队进行对话的过程,将我的流量最后一位改成了我的学号2
image
image

还有我和客户端进行多轮通话的示例
屏幕截图 2026-04-27 203246

加密解密方式选择的是UTF-8,因为python可以直接进行utf-8的编码和解码,本来我们想使用base64,但是不可以直接调用函数,需要先把库调用才可以,我们不太会,所以选择utf-8。
image

使用文件系统,文件选择直接将两方通信得到的结果进行记录
image

我: 20253312胡宸轩小朋友,我是杰斯奥特曼,你好啊
服务端: 20253302王紫晗同学,正常一点【笑脸】
我: 我是丁真
服务端: 就这样吧,再见
我: exit
我: 20253312胡宸轩小朋友,你好啊
服务端: 20253302王紫晗,我不好【哭脸】
我: 我会告诉塞罗的,塞罗最喜欢小盆骨了,会让你高兴起来的
服务端: 好好好,看不懂,再见!
我: exit
我: 胡宸轩小朋友,你好啊
服务端: 晚上不好,20253302王紫晗同学
我: 盖上被子好好睡一觉就好了,宝贝儿
服务端: 要去干活了【哭】,再见【哭脸】
我: exit
​

如果输入exit可以退出
image

这之后是AI生成的代码的效果
image
这里也是非常成功的实现了通信功能
image

最后是把代码托管到gitee上

王紫晗的gitee仓库

关于大模型和我自己的程序的优缺点:

  • 1.我的代码只能实现我说一句,对方说一句,但是不能我想说几句说几句,这是一个大问题。而AI的代码可以做到一方随意次数输入,不必等对方回复。
  • 2.我们的编码和解码方式非常简单,也很容易就被破解了。但是AI选择使用AES加密,32字节的密钥,他就是算到他姥姥家也算不出来(。
  • 3.AI生成代码的速度非常快,而且逻辑完备,只有少数地方需要更改,几乎是一次就是正确答案,而我的代码经过了至少5次的更改,调试才能勉强使用。

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

  • 问题1:我作为输入端进行操作无法连接队友
    image

image

  • 问题1解决方案:发现是队友的防火墙拦截了我的请求,队友更改后成功
    image

  • 问题2:如果密文在输入前面会导致还没输入,所以密文无法输入

  • 问题2解决方案:把密文改到输入后
    image
    image

  • 问题3:在使用AI生成的代码时密钥无法生成image

  • 问题3解决方案:发现应该进行一个名为下载安装cryptography库的行为
    image

其他(感悟、思考等)

感悟:AI生成服务端和客户端的所有代码非常快速,跑通基本要求很快,这还是我在给他输入了非常离谱的ptompt后的结果,而且一切看起来完美。但他当时给我的密钥是一个示例,并不是正确的32位密钥,所以我需要学会修改密钥,但如果看不懂那些生成出来的代码,我就无法生成一个自己想要的程序,一遇到报错或需求变化就会完全失败。

参考资料

posted @ 2026-04-29 15:58  马思钊  阅读(5)  评论(0)    收藏  举报