20192317 2022-2022-2 《Python程序设计》实验三报告
2022/5/3 20:42:50
本文主要是介绍20192317 2022-2022-2 《Python程序设计》实验三报告,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
20192317 2022-2022-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 1923
姓名: 邓子彦
学号:20192317
实验教师:王志强
实验日期:2022年5月2日
必修/选修: 公选课
一、实验内容
- 创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
二、实验过程及结果
2.1 socket 编程思路
TCP服务端:
-
1、创建套接字,绑定套接字到本地IP与端口 # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind()
-
2、开始监听连接 #s.listen()
-
3、进入循环,不断接受客户端的连接请求 #s.accept()
-
4、然后接收传来的数据,并发送给对方数据 #s.recv() , s.sendall()
-
5、传输完毕后,关闭套接字 #s.close()
TCP客户端:
-
1、创建套接字,连接远端地址 # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()
-
2、连接后发送数据和接收数据 # s.sendall(), s.recv()
-
3、传输完毕后,关闭套接字 #s.close()
-
实验截图
-
2.2 服务端
-
实验代码
import socket # 明确配置变量 ip_port = ('127.0.0.1', 8080) back_log = 5 buffer_size = 1024 # 创建一个TCP套接字 ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议 ser.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 对socket的配置重用ip和端口号 # 绑定端口号 ser.bind(ip_port) # 写哪个ip就要运行在哪台机器上 # 设置半连接池 ser.listen(back_log) # 最多可以连接多少个客户端 while True: # 阻塞等待,创建连接 #外层循环,即使客户端一次发送完成后,服务端也可以继续不断开,继续收发下次内容 con, address = ser.accept() # 在这个位置进行等待,监听端口号 while True: try: # 接受套接字的大小,怎么发就怎么收 msg = con.recv(buffer_size) if msg.decode('utf-8') == 'exit': # 断开连接 print('断开连接.') sendmsg = con.send('您断开了连接.'.encode('utf-8')) con.close() break else: print('服务器收到消息:', msg.decode('utf-8')) except Exception as e: break # 关闭服务器 ser.close()
-
实验截图
2.3 客户端
-
实验代码
import socket #配置连接的server信息 connect_ip = ('127.0.0.1', 8080) buffer_size = 1024 p = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #基于网络类型的,tcp协议 p.connect(connect_ip) #连接服务端 while True: msg = input('please input:') # 防止输入空消息 if not msg: continue p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码 if msg == 'exit': recvmsg = p.recv(buffer_size) #收服务端发送的消息 print(recvmsg.decode('utf-8')) break
-
实验截图
三、实验过程中遇到的问题和解决过程
-
问题1:运行终端时总是说由于目标计算机积极拒绝,无法连接。
-
问题1解决方案:询问同学还有去CSDN搜索原因发现应该先运行服务端,再运行客户端。
-
问题2:文件出现无法读写的情况
-
问题2解决方案:在CSDN上面搜索相关内容,后面得知添加文件操作符就可以解决文件无法读写的问题。
四、其他(感悟、思考等)
-
感想
- socket编程在之前的Java课程也学习过,果然在python课程中也还会接触到,计算机类的课程很多地方都是互通的,看来打好基础很重要。
这篇关于20192317 2022-2022-2 《Python程序设计》实验三报告的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南