课程:《Python程序设计》
班级: 1931
姓名: 程心雨
学号:20193111
实验教师:王志强
实验日期:2020年5月16日
必修/选修: 公选课
(一)实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(二) 实验过程及结果
- 我回顾了Socket的相关技术,通过回看上课视频,回忆了Socket相关的知识。
- 首先,我借用了之前创建的服务器端和客户端
- 客户端
-
import socket
s2 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s2.connect(('127.0.0.1',3391))
str=input("输入内容:")
s2.sendall(str.encode())
data2 = s2.recv(1024)
print(data2)
s2.close() - 服务端
-
import socket
s1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s1.bind(('127.0.0.1',3392))
s1.listen()
conn, address = s1.accept()
data1 = conn.recv(1024)
print(data1.decode())
conn.sendall(("数据内容:"+str(data1.decode())).encode())
s1.close() - 然后,适应的对程序进行相应的改编,运用base64模块进行加密解密工作,并在客户端中进行文件的打开,读取,关闭等操作
- 客户端
-
import socket
import base64
s1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s1.bind(('127.0.0.1',3393))
s1.listen()
conn, address = s1.accept()
data1 = conn.recv(1024)
a = open(r'D:\1931\dasuki.txt','r',encoding='UTF-8')
b = base64.b64decode(data1)
a.write(b.decode())
print(b.decode())
a.close()
s1.close() - 服务端
-
import socket
import base64
s2 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s2.connect(('127.0.0.1',3393))
a = open(r'D:\1931\dasuki.txt','r',encoding='UTF-8')
b = a.read()
c = base64.b64decode(b.encode())
a.close()
s2.close() - 结果如图所示
(三)实验过程中遇到的问题和解决过程
- 问题一:
- 问题一解决办法:因为在操作过程中,不知道自己在敲代码过程中到底删除了哪一个符号,导致代码很多地方都出现了红色,运行后,也出现了相应的问题,于是我去寻求了百度翻译,发现这一串代码成了无效的。于是我在该行查找,发现自己多删掉了一个括号,补上后,程序恢复正常。
- 问题二:
- 问题二解决办法:这是我计算机频繁曝出的错误,根据前几次的经验,我时不时讲代码某处的数字更改。
其他(感悟、思考等)
在实验过程中,我发现自己最近遗忘的东西太多了。根据艾宾浩斯的记忆曲线,可以得知,间隔时间越长,遗忘的知识越多。在进行实验的过程中,我时不时回顾之前上课所学知识,不会的地方就去寻求度娘找同学以及之前的笔记求救。
我在Socket这一方面的知识掌握度还是不够的,有些知识即便看了视频还是有一些懵,不过好在之前还是做了一点笔记的,回顾笔记勉强还是能敲出来的。之前因电脑问题,我无法在电脑上实现Socket模块的操控,只能借助同学的电脑远程帮我运行。今天经过重温知识点,以及一系列艰难的操作,总算是成了。这次实验相对之前的实验来说,还是有一定难度的,这也告诉我知识点要多回顾,多复习,才能达到不遗忘的效果。
参考资料
百度百科
笔记
教学视频