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的请求连接消息队列长度。
posted @ 2021-05-31 20:13  20192103  阅读(96)  评论(0)    收藏  举报