20234108 实验三《Python程序设计》实验报告

20234108申屠景浩 2024-04-23 19:57:13

 # 20234108 2023-2024-2 Python程序设计》实验三报告

 课程:《Python程序设计》
班级: 2341
姓名: 申屠景浩
学号:20234108
实验教师:王志强
实验日期:2024416
必修/选修: 公选课

## 1.实验内容

1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

2)服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

3)将程序代码托管到码云。

## 2. 实验过程及结果

1、先编写服务端程序。使用 import socket 引入Python内置的socket模块。调用 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ,创建一个基于IPv4协议的流式套接字。

2、使用 s.bind(("192.168.1.104", 1234)) 将套接字绑定到特定的IP地址"192.168.1.104"和端口1234,完成对服务器地址和端口的绑定。

3、调用 s.listen() 将套接字设置为监听状态,等待客户端的连接请求。使用“conn, address = s.accept()”语句等待并接受一个客户端的连接请求。使用 data = conn.recv(1024) 从客户端接收数据。参数 1024 表示最多接收1024字节的数据。

4、用“print("从客户端收到的信息为:", data.decode())”打印接收到的消息。其中data.decode())将接收到的字节数据解码回字符串形式。最后用使用 conn.sendall("你的消息已收到,谢谢!".encode())将语句“您的消息已收到,谢谢” 编码为字节序列,并通过与客户端连接的套接字(conn)发送给客户端。

1、接着编写客户端程序。用 import socket 引入Python内置的socket模块。使用 open("secret.txt","r+") 打开名为 "secret.txt" 的文件,使用 file1.write("记得写高数作业") 语句向文件中写入字符串 "记得写高数作业"。

2、使用“s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

”语句创建一个基于IPv4协议的流式套接字,建立与指定服务器的连接:s.connect(("192.168.1.104", 1234))。这里连接到IP地址为 "192.168.1.104"、监听端口为1234的服务器。

3、调用 s.recv(1024) 接收服务器发来的数据。其中参数 1024 表示最多接收1024字节的数据。接收到的字节数据存储在变量 data 中。使用 data.decode() 将接收到的字节数据解码回字符串形式,用print("从服务器接收的数据为:", data.decode())语句打印包含接收到的解码后数据的消息。最后,调用 s.close() 语句关闭与服务器的套接字连接。

最后的运行结果如下图所示:

上述程序实现的是和本机之间自身的发送与接收,按照老师上课演示的程序,通过学习、消化和吸收,在于20234119李海鑫同学的合作中,我作为客户端,成功实现了和对方跨机信息的彼此发送和接收:

## 3. 实验过程中遇到的问题和解决过程
- 问题1:服务端无法正常接收客户端发来的消息

 - 问题1解决方案:检查IPv4地址是否无误,发现前后两个程序输入的地址不一致,修改后没有出现问题。
- 问题2:报错“FileNotFoundError: [Errno 2] No such file or directory: 'secret.txt'

 - 问题2解决方案: 在对应文件夹下创建名为secret.txt的txt文件,从而使要发送的语句能够写入到该本地文件中。

- 问题3:双方IPv4地址一致、端口一致时仍无法正常传输(客户端发消息,服务端无显示)

 - 问题3解决方案: 确认程序无误后,更换新的端口,反复尝试,最终成功。


## 其他(感悟、思考等)

利用Socket套接字(TCP/UDP)进行通信对我来说是一个全新的内容,难度很大,涉及很多之前从未涉猎的知识点和领域。通过对老师示范的程序的反复钻研和相关资料的查找,在同学的帮助下,我对这部分内容有了一个比较粗略、初步的理解。今后我还是要继续深入学习这部分内容,做到真正理解和掌握。

# #参考资料

https://blog.csdn.net/mouxiaoxiong/article/details/52160367

socket套接字详解(TCP与UDP)_图解套接字-CSDN博客

 

 

...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

93

社区成员

发帖
与我相关
我的任务
社区描述
Python程序设计作业
软件构建 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧