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 套接字协议

 


 

 

参考资料

 

关于 socket套接字编程 tcp服务端和客户端的建立

Python Socket 网络通信详解

Python socket详解

基于CBC模式的DES密码

密码学-对称加密体系-DES-CBC模式

 

 

posted @ 2022-05-03 23:19  皓亦寒  阅读(101)  评论(0编辑  收藏  举报