20214335 2021-2022-4 《Python程序设计》实验三报告

20214335 2021-2022-4 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2143
姓名: 李佳俊
学号:20214335
实验教师:王志强
实验日期:2022年4月21日
必修/选修: 公选课

1.实验内容

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

2. 实验过程及结果

(1)设定服务器和客户端
服务器:

点击查看代码
import socket  #导入socket库
import base64
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',8001))                                #绑定ip地址(服务器的)8001是端口,都是默认的
s.listen()                                                #监听(等待)
conn,address = s.accept()                                 #阻塞
data = conn.recv(1024)                                    #接收
file0 = open("Here.txt", "w")
c1 = base64.b32decode(data)
file0.write(c1.decode())
file0.close()
print("收到来自客户端加密的信息:", data.decode(), "\n已解密至receive文件中")
conn.sendall("已接收!".encode())
c1 = conn.recv(1024)
print("来自客户端的信息", c1.decode())
s.close()

客户端:

点击查看代码
import socket
import base64
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8001))                       #连接,元组的形式,(ip地址,端口)
text = input("请输入要传输的内容:")
file1 = open("Hi,there.txt","a+")                    #打开文件
file1.write(text)                                    #往文件中写内容
print('已写入文件')
text = text.encode('utf-8')
encode_text = base64.b32encode(text)
s.sendall(encode_text)
file1.close()
data = s.recv(1024)
print("客户端的信息:", data.decode())
s.sendall("收到".encode())
print("File has been sent.")
s.sendall("已接收!".encode())
s.close()

(2)运行
image
image
image
image
image

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

  • 问题1:不会加密传输的信息
  • 问题1解决方案:在csdn上搜索加密方式及应用
  • 问题2:不会建立文件并将传输的文件存入且做到可以读取
  • 问题2解决方案:询问同学后在网上查阅得知.txt格式可以正常打开

其他(感悟、思考等)

基础薄弱,在应用socket时只能用老师给定的环境,还需要进一步优化。
不是很理解socket的原理和灵活运用。
加密方式有很多,base64还有许多局限性,如只能传输八位信息。

参考资料

base64加密

posted @ 2022-04-28 19:08  李佳俊813  阅读(40)  评论(0编辑  收藏  举报