20234104王逸天 2024-2025-2 《Python程序设计》实验三报告
20234104王逸天 2024-2025-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级:2341
姓名:王逸天
学号:20234104
实验教师:王志强
实验日期:2025年4月15日
必修/选修: 专选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
2. 实验过程及结果
(1)编写服务端代码,代码解释如下
- import导入socket库,用以网络通信
- 创建一个socket对象并绑定本服务器ip和指定的端口号
- .listen方法开始监听链接请求,参数为允许的最大连接数,print出可视化信息,表明已经启动并开始监听
- 接受链接请求后,返回一个新的客户端套接字对象和客户端地址,并使用print可视化已经链接
- 建立用以重复收发消息的while循环
- 接受客户端信息,最多1024字节,并将收到的信息按“UTF-8“编码方式解码输出
- 创建返回信息对象,使用同样的编码方式转为二进制信息传递
- 如果没有信息,中断循环并输出相应提示
- 使用.close方法,关闭链接与服务
(2)编写客户端代码
- 多数步骤同上
- 输入服务器ip地址与其指定的端口号,并使用.connect方法建立链接
- 使用while循环用以多次发送消息,其他内容不变
- 使用if循环进行是否通信的判断,如果为N则解释while循环,并断开链接
- 关闭链接
(3)尝试与同学进行通信
- 详见上两图中的运行结果区域,作为服务器端与客户端均完成通信
3. 实验过程中遇到的问题和解决过程
-
问题1:ip地址、端口号全部正确,无法通信
-
问题1解决方案:关闭网络防火墙,打开该程序的防火墙权限,即可通信
-
问题2:只能进行一次通信,再次通讯需要重新连接
-
问题2解决方案:未使用while循环或while循环逻辑错误
其他(感悟、思考等)
1、初步理解了socket库的使用方法和其中各种方法及参数
2、进一步理解了python作为模块化编程语言的便利之处
3、深入理解了while循环在重复交互或多次交互中的作用
4、进一步理解了网络通信与网络安全知识,切实体验了防火墙功能。