# 学号 2022-2022-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2143
姓名: 单宇航
学号:20214302
实验教师:王志强
实验日期:2022年4月30日
必修/选修: 公选课
## 1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
## 2. 实验过程及结果
本次实验我是与20214319薛曦晨同学一完成的本次实验,我为服务端,薛同学为客户端。
一、代码的学习与了解
通过学习和了解,加上网上资料的查阅,下面的流程图直接又简洁,第一版便根据此进行设计。
二、代码的编辑与尝试的过程
第一版产物,但可惜的是,仅仅做到了两个主机相连,却并不能有效的识别文字
经过进一步查找和分析问题,通过建立传输加密之后,功能文字传输功能得以顺利实现。
使用decode('utf-8')来实现信息解密
使用ecode(‘utf-8’)来实现信息加密
“UTF-8 是声明Python代码的文本格式是UTF-8,按照这种格式来读取程序。”
加密后代码(我这边主要以服务端的演示为主,客户端详细见20214319薛曦晨同学的演示)
成功实现了不同信息的交流。
三、从传输文字到传输文件
图中已标出所接收到的图片格式的1.png,证明传输成功。
四、寻找自己的ip地址
想必大家已经看到了bind.('xxx,xxx,xxx,xxx',XXXX)了,前者是ip地址
我在此处以windows10为例
1.左下角查询栏
2.搜索WLAN设置
3.点击硬件属性
4.这样我们就找到了当前连接的网络的IP地址了
进行socket如果是多台设备,链接同一个局域网或移动热点,移动热点的查询方法基本一致。
当然做到最后,我们设计出来的代码依旧是初级代码,尚且达不到qq,微信的效果,后续有兴趣的同学可以进一步进行探索。
## 3. 实验过程中遇到的问题和解决过程
- 问题1:听的时候感觉很难,感觉离自己很远,做不到
- 问题1解决方案:同学鼓励,相互学习,一起尝试,最终发现并没有想象的那么难。
- 问题2:理解起来比较难
- 问题2解决方案:一条一条代码去查,去了解是干什么用的,多次尝试。
- 问题3:传输文件时找不到在哪里
-问题3解决办法:上网查询,询问同学,得以解决。
## 感想:
这一次尝试,又了解到了新的socket,struct库。对于看似遥不可及的qq,微信等聊天工具,自己这次也能做到了,其实比较激动,当然最后的产物虽然远不比QQ,微信。
每一次实验都是打开一片新的世界,虽然写的过程很难,但是最后的收获和感受还是很好的。
这次我完成的socket代码只能实现一条信息的传递,多次交流并不能留下历史记录,即时多加了几个conn.send()想实现一次多语句交流也并未成功,传输文件也是一次性的,目前只是了解到了表层知识,在以后的闲暇时间,仍需进一步了解和尝试,才能完善目前存在的诸多问题吧。
##查找链接
https://blog.csdn.net/SmartShepi/article/details/115405966
xxx
xxx
## 参考资料