20221312 2022-2023-2 《Python程序设计》实验三报告

20221312 2022-2023-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2213
姓名: 付安旭
学号:20221312
实验教师:王志强
实验日期:2023年4月13日
选修: 公选课

1.实验内容

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

2. 实验过程及结果

服务端代码:

import socket
import os
from DesModule import *

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.1.112", 8000))
s.listen()
conn, address = s.accept()
data = conn.recv(1024)
ciphertext = des_encrypt("What are you doing?", "81097581")
print("密文为", data.decode())
plaintext = des_descrypt(data, "11451419")
print("来自客户端的信息是", plaintext)

if os.path.exists("C:\\Users\\酌雪\\PycharmProjects\\MypythonProject\\Joci_text"):
    file = open("Joci_text", "a+")
    file.write(plaintext)
else :
    file = open("Joci_text", "w+")
    file.write(plaintext)
    file.seek(0)

file.close()

conn.sendall(ciphertext.encode())

客服端代码:

import socket
import os
from DesModule import *
if os.path.exists("C:\\Users\\酌雪\\PycharmProjects\\MypythonProject\\Joci__text"):
    file = open("Joci__text", "r+")
else :
    file = open("Joci__text", 'w+')
    file.write("Today I have ate three meals!")
    file.seek(0)

text = file.readline()
ciphertext = des_encrypt(text, "81097581")

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.133", 8000))
s.sendall(ciphertext.encode())
data = s.recv(1024)
print("密文为", data.decode())
plaintext = des_descrypt(data.decode(), "11451419")
print("明文为", plaintext)
file.write(plaintext)
file.close()

s.close()

实验结果:

个人做服务端时:
个人接收信息对方接受信息个人做客户端时:

20221312 2022-2023-2 《Python程序设计》实验三报告_第1张图片个人接收信息gitee上提交代码:

20221312 2022-2023-2 《Python程序设计》实验三报告_第2张图片20221312 2022-2023-2 《Python程序设计》实验三报告_第3张图片

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

  • 问题:出现如下的错误提示:
    20221312 2022-2023-2 《Python程序设计》实验三报告_第4张图片

  • 问题解决方案:经检查,发现这里的数据类型使用了整型
    发现错误
    后来将密钥改为字符串型,错误消失
    修改错误

感悟

这算是第二次接触socket编程,之前在另一位计算机老师的带领下略微接触了一下,但这次的代码都是自己一个一个敲的,最终通信结果的出现还是蛮欣喜的。

参考资料

  • 实验三 Socket编程技术

你可能感兴趣的:(python)