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)运行
3. 实验过程中遇到的问题和解决过程
- 问题1:不会加密传输的信息
- 问题1解决方案:在csdn上搜索加密方式及应用
- 问题2:不会建立文件并将传输的文件存入且做到可以读取
- 问题2解决方案:询问同学后在网上查阅得知.txt格式可以正常打开
其他(感悟、思考等)
基础薄弱,在应用socket时只能用老师给定的环境,还需要进一步优化。
不是很理解socket的原理和灵活运用。
加密方式有很多,base64还有许多局限性,如只能传输八位信息。