实验三 Socket编程技术

课程:《Python程序设计》
班级: 2034
姓名: 马畅若
学号:20203412
实验教师:王志强
实验日期:2020年5月30日
必修/选修: 公选课

##1.实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

实验要求

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

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

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

(4)程序代码托管到码云。

##2.实验过程及结果

创建服务器端和客户端,先在客户端中导入socket模块,创建套接字,连接远端地址(s.connect()),连接后发送和接收数据(s.sendall(),s.recv()),传输完毕,最后关闭套接字(s.close())

再在服务器端导入socket模块,创建套接字,绑定套接字到本地IP与端口(s.bind()),开始监听连接(s.listen()),进入循环,不断接受客户端的连接请求(s.accept()),然后接收传来的数据,并发送给对方数据(s.recv(),s.sendall()),传输完毕后,关闭套接字(s.close())

解密:使用base64进行解密。

将该模块导入,在客户端进行通信前对消息使用base64.b32encode()函数加密后再进行传输,在服务器端再使用base64.b32decode()函数对收到的消息进行解密,解密后再保存至文件中。

p.s.:需要初始化服务器,令服务器连接本地IP地址和端口,建立服务器端和客户端的通信;

记得关闭防火墙。

客户端

服务器端

实验结果

码云链接

https://gitee.com/ma-changruo/py.git

## 3. 实验过程中遇到的问题和解决过程

- 问题1:在客户端打开文件时无法打开

- 问题1解决方案:通过百度和在CSDN上查找资料,试了许多给出的情况样例,最终换了一个端口。

- 问题2:无法找到指定文件。

- 问题2解决方案:同样也是在百度上搜索经验分享,最终找到了解决方案。

## 4.感悟思考

这次实验是目前自己用时最久的实验,因为在编码过程中仍然存在许多的语句结构不太熟悉,用了很长的时间去回看老师给出的代码与网上传出的代码,希望能够编出一个实用的代码。

在调试计算机积极拒绝的问题上也用了很久的时间,其间还遇到了系统找不到指定文件的问题,结果发现是在pycharm的编译环境中位置的移动。

一个又一个错误确实在调试过程中使人绝望,但是当查阅各种资料后解决问题时,确实让人感到无比的成就感。

##5. 参考资料

https://m.php.cn/article/192504.html

https://blog.csdn.net/thj_1995/article/details/88219488

20203412马畅若 实验三 《Python程序设计》Socket编程技术实验报告的更多相关文章

  1. 20182332 实验四《Java Socket编程 》实验报告

    20182332 实验肆<数据结构与面向对象程序设计>实验报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 实验日 ...

  2. 20184307 实验三 Socket编程技术

    实验三 Socket编程技术 学号 20184307 2019-2020-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级:1843 姓名:章森洋 ...

  3. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  4. 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...

  5. 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  6. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

  7. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验五 《网络安全与编程》 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验五 <网络安全与编程> 实验报告 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:盛 ...

  8. 转:Python 的 Socket 编程教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs. ...

  9. Python 3 socket 编程

    Python 3 socket编程 一 客户端/服务器架构 互联网中处处是C/S架构 1.C/S结构,即Client/Server(客户端/服务器)结构 2.在互联网中处处可见c/s架构 比如说浏览器 ...

  10. python之socket编程(一)

    socket之前我们先来熟悉回忆几个知识点. OSI七层模型 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标 ...

随机推荐

  1. 真正“搞”懂HTTP协议13之HTTP2

    在前面的章节,我们把HTTP/1.1的大部分核心内容都过了一遍,并且给出了基于Node环境的一部分示例代码,想必大家对HTTP/1.1已经不再陌生,那么HTTP/1.1的学习基本上就结束了.这两篇文章 ...

  2. git操作出现 error: The following untracked working tree files would be overwritten by ...

    命令行:git clean -d -fx,作用是:删除没有git add 的文件 ,执行之后解决了 error: The following untracked working tree files ...

  3. 学习Java Day2

    今天学习了Java常量的关键字,与C/C++不同,Java是final,而且Java的常量一般用全大写表示:也学习了枚举变量,运算符,数学函数与常量,其中大多知识与C/C++相同,但是Java还提供M ...

  4. Centos7下areaDetector IOC的编译(回收站捡回)

    在这里插入图片描述 补记:这篇应该是在CSDN发的第一篇,没经验,用那个markdown方式编辑发布的,修改起来好麻烦,而且流程的命令不方便copy粘贴,干脆就删掉了,后来重新整理了一篇.无意中又被我 ...

  5. 代码随想录算法训练营day16 | leetcode ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

    基础知识 二叉树的多种遍历方式,每种遍历方式各有其特点 LeetCode 104.二叉树的最大深度 分析1.0 往下遍历深度++,往上回溯深度-- class Solution { int deep ...

  6. 【树莓派】在vscode中连接树莓派并编写代码

    在树莓派里编写代码的话会比较麻烦因此可以在vscode中通过ssh连接树莓派并且编辑代码 参考: vscode通过ssh连接树莓派实现远程开发 VSCODE 远程开发树莓派 使用vscode打造pyt ...

  7. accessservice对于难定位的view如何定位

    private static int tabcount = -1; private static StringBuilder sb; public static void printPacketInf ...

  8. ifconfig查询的时候,只有lo网卡,没有ens33网卡

    问题ifconfig查询的时候,只有lo网卡,但是ifconfig -a查询的时候却有ens33网卡ls /etc/syconfig/network-scripts/查找所有网卡配置信息文件的时候,没 ...

  9. 深入理解JVM - 自动内存管理

    对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每一个对象的"所有权",又担负着 ...

  10. centos7端口转发工具rinetd

    1.下载软件 wget http://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm 2.安装软件 yu ...