20212329 实验三《Python程序设计》实验三报告
学号 20212329 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2123
姓名: 陈鹏宇
学号:20212329
实验教师:王志强
实验日期:2022年4月25日
必修/选修: 公选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
2. 实验过程及结果
(1)实验思路
基于socket的通讯设备,利用socket技术完成简单的服务器端和客户端的交流,要求中加入文件操作和文件加密,所以只需在交流的基础上进行读取文件,加密文件,解密文件,写入文件,选择base64加密和解密。
(2)运行结果
循环发送字符串给服务器。取'close_'作为关闭连接的保留字。
循环接收客户端发送的数据,并写入文件中。取'close_'作为关闭连接的保留字。
3. 实验过程中遇到的问题和解决过程
其他(感悟、思考等)
1.Python socket:
套接字,通信端点,是计算机网络数据结构。在任何类型的通信开始之前,网络应用程序必须创建套接字。
2.客户端/服务器:
服务器为一系列硬件软件,为一定数量客户端提供服务,其存在的唯一目的就是等待客户端的请求并响应、回复,继续等待。
3.Python常见套接字:
s.bind(ADDR) | 将地址(主机名、端口号对)绑定到套接字上 |
s.listen([backlog]) | 设置并启动 TCP 监听器,如果指定backlog,则必须至少为0(如果低于0,则设置为0); |
s.accept() | 被动接受 TCP 客户端连接,一直等待直到连接到达(阻塞) |
客户端 | 客户端套接字方法 |
s.connect() | 主动发起 TCP 服务器连接 |
s.connect_ex() | connect()的扩展版本,此时会以错误码的形式返回问题,而不是抛出一个异常 |
普通通用 | 普通的套接字方法 |
s.recv() | 接收 TCP 消息 |
s.recv_into() | 接收 TCP 消息到指定的缓冲区 |
s.send() | 发送 TCP 消息 |
s.sendall() | 完整地发送 TCP 消息 |
s.recvfrom() | 接收 UDP 消息 |
s.recvfrom_into() | 接收 UDP 消息到指定的缓冲区 |
s.sendto() | 发送 UDP 消息 |
s.getpeername() | 连接到套接字(TCP)的远程地址 |
s.getsockname() | 当前套接字的地址 |
s.getsockopt() | 返回给定套接字选项的值 |
s.setsockopt() | 设置给定套接字选项的值 |
s.shutdown() | 关闭连接 |
s.close() | 关闭套接字 |
s.detach() | 在未关闭文件描述符的情况下关闭套接字,返回文件描述符 |
s.ioctl() | 控制套接字的模式(仅支持 Windows) |
阻塞 | 面向阻塞的套接字方法 |
s.setblocking() | 设置套接字的阻塞或非阻塞模式 |
s.settimeout() | 设置阻塞套接字操作的超时时间 |
s.gettimeout() | 获取阻塞套接字操作的超时时间 |
文件方法 | 面向文件的套接字方法 |
s.fileno() | 套接字的文件描述符 |
s.makefile() | 创建与套接字关联的文件对象 |
属性 | 数据属性 |
s.family | 套接字家族 |
s.type | 套接字类型 |
s.proto | 套接字协议 |
参考资料
本文来自博客园,作者:{HYHr},转载请注明原文链接:https://www.cnblogs.com/dishearten/p/16175587.html