• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Recoleta
博客园    首页    新随笔    联系   管理    订阅  订阅
20242421 实验三《Python程序设计》实验报告

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但发现没改变。结果我最后偶然发现默认运行文件并不是当前文件,所以才导致了这些错误。

参考资料

无

posted on 2025-04-29 15:19  秒针栖息地  阅读(21)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3