20201123 2020-2021-2 《python程序设计》实验三报告

课程:《Python程序设计》
班级:2011
姓名:晏鹏捷
学号:20201123
实验教师:王志强
实验日期:2021年5月29日
必修/选修:公选课

一、实验内容

       创建服务端和客户端

       服务端在特定端口监听多个客户请求

       客户端和服务端通过Socket套接字(TCP/UDP)进行通信

二、实验要求

1、创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序

2、要求包含文件的基本操作,例如打开和读写操作

3、要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中

4、程序代码托管到码云

 

三、实验过程

1、 TCP客户端

(1)创建套接字,连接远程地址

       import socket#客户端的socket初始化

       s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 参数1:服务器之间网络通信;参数2:流式socket , for TCP

'127.0.0.1', 8001))#连接,元组形式,(IP地址,端口)

 

(2)连接后发送、接收数据

         str = input(“请输入要传输内容”)

         s.sendall(str.encode())

         data = s.recv(1024)

         print(data.decode())

(3)传输完毕,关闭套接字

         s.close()

         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

'127.0.0.1', 8001))

 

2、TCP服务端

(1)创建套接字,绑定套接字到IP与端口

       import socket#客户端的socket初始化

       s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 参数1:服务器之间网络通信;参数2:流式socket , for TCP

'127.0.0.1', 8001))#连接,元组形式,(IP地址,端口)

(2)开始监听连接

       s.listen()

(3)进入循环,接收客户端的连接请求

       conn, address = s.accept()

(4)接收数据并发送给对方

       data = conn.recv(1024)

       print(data.decode())

       conn.sendall((“服务器已经接收到数据:”+str(data.decode())).encode())

(5)传输完毕,关闭套接字

       s.close()

 

3、循环通讯

python程序设计基础第三版pdf下载 python程序设计第三版电子版_服务端

 

4、发送、接收文件

(1)客户端

发送:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_服务端_02

接收:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_套接字_03

 

(2)服务端

传输:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_客户端_04

 

 接收:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_套接字_05

 

 

5、加密、解密文件

加密:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_服务端_06

 

 解密:

python程序设计基础第三版pdf下载 python程序设计第三版电子版_套接字_07

 

 

四、遇到问题和解决过程
1、问题:代码太多太复杂,对于基础特别弱的我来说头疼不已
     解决方案:一点一点慢慢研究,要有耐心,不能急躁
2、问题:找不到实验时的相关代码和截图了
     解决方案:先弄懂具体的操作和步骤,之后有时间记得补上

五、感悟思考
      1、这次实验真的好难,靠着同学的教学和讲解才琢磨出一点点,因为代码需要多次修改完善美化但是个人能力达不到,在实验过程中的确出现多次气馁和想放弃的心态,加上个人整理原因原本应该保存的代码和运行截图全部丢失,导致这次实验报告显得简陋匆忙,在今后自学的过程中,一定一定要吸取教训,舍得花时间,不要着急,慢慢修改。

      2、从网上寻找的方法和代码有时可能超出现有能力范围,导致头脑混乱,容易晕,有些代码还需要自己修改才能运行的,也是考验个人基础知识的一种途径。所以在面临长难代码的debug时,以前会头疼不已,现在试着多冷静找问题了

六、 参考资料

https://viewer.mosoteach.cn/viewer?token=f81e9bfbde05e12df3bf8f3de97e9cbc&screenx=false&app_id=MTWEB&app_version=5.3.3&location=

https://www.mosoteach.cn/web/index.php?c=res&m=index&clazz_course_id=3618F6B1-9D43-4EF0-85E9-8342969DB202