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)编写客户端代码

image

  • 多数步骤同上
  • 输入服务器ip地址与其指定的端口号,并使用.connect方法建立链接
  • 使用while循环用以多次发送消息,其他内容不变
  • 使用if循环进行是否通信的判断,如果为N则解释while循环,并断开链接
  • 关闭链接

(3)尝试与同学进行通信

  • 详见上两图中的运行结果区域,作为服务器端与客户端均完成通信

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

  • 问题1:ip地址、端口号全部正确,无法通信

  • 问题1解决方案:关闭网络防火墙,打开该程序的防火墙权限,即可通信

  • 问题2:只能进行一次通信,再次通讯需要重新连接

  • 问题2解决方案:未使用while循环或while循环逻辑错误

其他(感悟、思考等)

1、初步理解了socket库的使用方法和其中各种方法及参数
2、进一步理解了python作为模块化编程语言的便利之处
3、深入理解了while循环在重复交互或多次交互中的作用
4、进一步理解了网络通信与网络安全知识,切实体验了防火墙功能。

posted @ 2025-05-10 14:02  念水0518  阅读(14)  评论(0)    收藏  举报