20244207 2024-2025-2 《Python程序设计》实验三报告
20244207 2024-2025-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2442
姓名: 赵文萱
学号:20244207
实验教师:王志强
实验日期:2025年4月15日
必修/选修: 公选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。;
2. 实验过程及结果
实验要求
创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序。
实验过程
(1)通过学习Socket编程知识点,明白socket=IP+端口,掌握Socket编程工作原理,学习Socket类型、Socket函数;

(2)创建服务器端,导入socket模块,用于实现网络通信。创建一个TCP类型的Socket对象,用socket.AF_INET来指定使用IPv4地址族;

(3)设置服务器监听的IP地址和端口号。通过按win+R,输入cmd,打开命令提示符,输入ipconfig以显示本机地址族;

(4)用bind将之前创建的server_socket与指定的ip地址和端口绑定。将socket转为监听模式,“1”表示允许排队的最大未接受连接数,超过后客户端连接会被拒绝。接受客户端连接打印监听信息;

(5)用while循环处理客户端的消息,直到客户端断开连接或手动终止。client_socket.receive(1024)中的“1024”是指接收缓冲区的最大字节数。用“decode('utf-8')指将字节数据转为UTF-8编码字符串。recv()是阻塞方法,若无数据到达则一直等待,若客户端断开,返回空字节。用if条件函数判断字节是否为空;

(6)创建客户端和之前的服务端大同小异,有区别的是:客户端不需要绑定固定端口,系统会自动分配一个可用端口,通过connect主动连接到服务端地址,无需监听;

(7)对客户端代码进行调试与运行,与20244210陈可同学合作,此时我是客户端:



(8)对服务端代码进行调试与运行,与20244210陈可同学合作,此时我是服务端:


3.实验过程中遇到的问题和解决过程
- 问题1:在上下文中请求的地址无效。
- 问题1解决方案:请教老师之后发现是输入的IP地址是以太适配器中的IPv4地址,重新输入正确的地址后成功解决问题。
![]()
![]()
- 问题2:作为服务端时,接收不到客户端合作伙伴的消息。
- 问题2解决方案:请教老师之后发现是打开了防火墙,关闭防火墙之后成功运行。
![]()
其他(感悟、思考等)
(1)这次实验让我真正理解了课堂上学的“网络通信原理”是怎么变成一行行代码的。以前总觉得IP地址、端口这些概念很抽象,但当我亲自用“socket.AF_INET”指定IPv4、用“bind()”绑定本机IP时,突然就理解了其中的运行机制。
(2)实验中遇到的让我印象很深的困难是一个“地址无效”的报错。一开始对着代码反复检查,结果发现是复制IP地址时多打了个空格。这件事教会我:编程不仅是写代码,更是要排查细节。
(3)用“ipconfig”查本机IP、用“netstat”看端口占用,这些命令行工具成了我的新技能。



浙公网安备 33010602011771号