20192103 实验三《Python程序设计》实验报告
# 20192103 2020-2021-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 1921
姓名:刘廷奇
学号:20192103
实验教师:王志强
实验日期:2020年5月24日
必修/选修: 公选课
## 1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
实验要求:
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
## 2. 实验过程及结果
服务器端:
创建服务器端,导入两个模块:socket和加密base64
输入明文,并对其加密
使用Socket套接字(TCP/UDP)进行通信
连接本地的ip地址和端口
发送加密后的信息

客户端:
创建客户端,导入两个模块:socket和加密base64
使用Socket套接字(TCP/UDP)进行获取
连接本地的ip地址和端口
监听密文,并对其解密保存




https://gitee.com/liu-tingqi/PythonWork/blob/master/%E5%AE%A2%E6%88%B7%E7%AB%AF.py
https://gitee.com/liu-tingqi/PythonWork/blob/master/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF.py
## 3. 实验过程中遇到的问题和解决过程
- 问题1:提示使用了已建立链接的端口,无法正常完成进程
- 问题1解决方案:关闭占用这个端口的进程,重新运行
## 其他(感悟、思考等)
初次学习到了简单的交互,网络通信上,使用Socket 套接字(TCP+UDP)方式作用很大,内容还有很多,阅读其他的博客之后对本实验中使用的方法,做了一些了解:
1. socket()
int socket(int domain, int type, int protocol);
- domain:协议族(family)。如:AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE等等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。
- type:socket类型。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。
- protocol:故名思意,就是指定协议。常用的协议有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。
本实验中使用的是socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2. listen()
int listen(int sockfd, int backlog);
- sockfd: 为需要进入监听状态的套接字。
- backlog: backlog保存的是完成三次握手、等待accept的请求连接消息队列长度。

浙公网安备 33010602011771号