20232327杨文贤 2023-2024-3 《Python程序设计》实验三报告

Amir1900 2024-04-21 00:06:19

课程:《Python程序设计》
班级: 2323
姓名: 杨文贤
学号:20232327
实验教师:王志强
实验日期:2024年4月17日
必修/选修: 公选课

1.实验内容

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

2. 实验过程及结果

1. 运行服务器端代码,等待用户连接

import socket
from DesModule import des_encrypt, des_descrypt

TCP_IP = "192.168.1.111"#当前服务器ip
TCP_PORT = 2028
KEY = "12345678"

tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpserver.bind((TCP_IP, TCP_PORT))
tcpserver.listen(5)

def receive_encrypted_data(conn, KEY):
    encrypted_data = conn.recv(1024).decode()
    decrypted_data = des_descrypt(encrypted_data, KEY)
    return decrypted_data

while True:
    conn, addr = tcpserver.accept()
    print(conn)
    while True:
        try:
            data = receive_encrypted_data(conn, KEY)
            print(data)
            ret_data = input("请回复:")
            encrypted_ret_data = des_encrypt(ret_data, KEY)
            conn.send(encrypted_ret_data.encode())
        except Exception:
            break
    conn.close()

2. 运行用户端代码,服务器端显示加入用户ip

import socket
from DesModule import des_encrypt, des_descrypt

TCP_IP = "192.168.1.111"#当前服务器ip
TCP_PORT = 2028
KEY = "12345678"

tcpclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpclient.connect((TCP_IP, TCP_PORT))

while True:
    data = input('>>>').strip()
    encrypted_data = des_encrypt(data, KEY)
    tcpclient.send(encrypted_data.encode())
    ret_data = tcpclient.recv(1024).decode()
    decrypted_data = des_descrypt(ret_data, KEY)
    print(decrypted_data)

tcpclient.close()

3.连接成功后可由用户端先发送消息,示例如下:
自己充当用户端

img

自己充当服务器端

img

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

  1. 没有注意端口不一致而导致连接失败;
  2. 服务器端ip为localhost而导致连接失败,应改为服务器端电脑ip地址;
  3. 在导入DesModule模块时使用from DesModule import *不能导入,将其改为from DesModule import des_encrypt, des_descrypt后导入成功;
  4. 在进行通信可以将网络配置文件类型改为专用网络,可以防止防火墙的影响;

其他(感悟、思考等)

  • 上面的代码用socket实现服务器端和用户端之间的简单加密通信,如果不进行加密捕获网络数据包是否就能直接获得传输内容;
  • 上面的代码实现一个服务器和一个用户的通信,但是不能同时进行多个用户的通信,是否能经过修改代码实现一对多的同时交流;
  • 对其他文件模块的调用不是很清楚,对DesModule加密的调用不是很理解
...全文
77 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110

社区成员

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

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