20231219范云炅《Python程序设计》实验三报告

20231219范云炅 2024-04-24 20:48:23

20231219 2023-2024-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2312
姓名:范云炅
学号:20231219
实验教师:王志强
实验日期:2024年4月17日
必修/选修: 公选课

(一)实验内容

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

(二)实验要求

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

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

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

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

 

(三)实验过程及结果

1.运行服务器端代码:

import socket

tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpserver.bind(("192.168.121.1", 2024))
tcpserver.listen(5)
while True:
    conn, addr = tcpserver.accept()
    print(conn)
    while True:
        try:
            data = conn.recv(1024)
            print(data.decode("utf-8"))
            # ret_data = "收到!"
            ret_data = input("请回复:")
            conn.send(ret_data.encode('utf-8'))
        except Exception:
            break
    conn.close()

2.运行客户端代码

import socket

tcpclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpclient.connect(("192.168.121.1", 2024))
while True:
    while True:
        data = input('>>>').strip()
        tcpclient.send(data.encode('utf-8'))
        ret = tcpclient.recv(1024)
        print(ret.decode('utf-8'))
tcpclient.close()

3.加密解密代码

from pyDes import *
import binascii
def des_encrypt(s, KEY):
    secret_key = KEY
    iv = secret_key
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    en = k.encrypt(s, padmode=PAD_PKCS5)
    return binascii.b2a_hex(en).decode()
def des_descrypt(s, KEY):
    secret_key = KEY
    iv = secret_key
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
    return de.decode()
if __name__ == "__main__":
    ciphertext = des_encrypt("hello, world!", "12345678")
    print("密文:",ciphertext)
    plaintext = des_descrypt(ciphertext, "12345678")
    print("解密后的明文:", plaintext)

4.进行对话

进行多次对话

 

 进行单次对话

 

 

(四).实验过程中遇到的问题和解决过程

  • 问题1:代码报错,缺少必要的软件,缺少模块pydes
  • 解决方案:根据提示,去CSDN,下载所需内容
  • 问题2:无法正确连接上同伴的电脑,目标计算机积极拒绝
  • 解决方案:可能是防火墙进行了拦截,对防火墙进行一个关闭
  • 问题3:加密解密无法通过,不会输出密文,进行一个解密操作
  • 解决方案:通过询问同伴;查询资料,了解DES的代码实现

 

...全文
136 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用Python!
python3.11 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧