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()

实验结果:

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

对方接收信息个人接收信息gitee上提交代码:

代码1代码2

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

  • 问题:出现如下的错误提示:
    错误1

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

感悟

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

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值