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、循环通讯
4、发送、接收文件
(1)客户端
发送:
接收:
(2)服务端
传输:
接收:
5、加密、解密文件
加密:
解密:
四、遇到问题和解决过程
1、问题:代码太多太复杂,对于基础特别弱的我来说头疼不已
解决方案:一点一点慢慢研究,要有耐心,不能急躁
2、问题:找不到实验时的相关代码和截图了
解决方案:先弄懂具体的操作和步骤,之后有时间记得补上
五、感悟思考
1、这次实验真的好难,靠着同学的教学和讲解才琢磨出一点点,因为代码需要多次修改完善美化但是个人能力达不到,在实验过程中的确出现多次气馁和想放弃的心态,加上个人整理原因原本应该保存的代码和运行截图全部丢失,导致这次实验报告显得简陋匆忙,在今后自学的过程中,一定一定要吸取教训,舍得花时间,不要着急,慢慢修改。
2、从网上寻找的方法和代码有时可能超出现有能力范围,导致头脑混乱,容易晕,有些代码还需要自己修改才能运行的,也是考验个人基础知识的一种途径。所以在面临长难代码的debug时,以前会头疼不已,现在试着多冷静找问题了
六、 参考资料