我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现一个发送程序和接收程序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现一个发送程序和接收程序

前言

实验目的:掌握开发、测试、发布、调用进程间通信的基本方法、工具和流程,理解独立构件体系结构基本原理、结构和特点。掌握使用当今主流云平台来构建独立构件风格软件的相关开发技能。

背景及要求: 现今,随着软件开发规模的逐渐增大,软件开发的规范准则也随之发生了变化,从最开始只注重程序正确性运行的算法,到现如今注重在整个开发中的架构模式,软件复用性等等质量属性,软件体系结构的规范化与结构化对软件开发的影响越来越大。其中,数据流风格就是软件体系结构风格中一种典型的风格,其高耦合低内聚的特点和构件的独立性使得软件的复用性很高,适用于需要处理源源不断的数据的系统。

[以上说明来自教材以及自己的理解]

现今,越来越多的企业面临着各种各样的数据集成和系统整合的系统需求,掌握开发、测试、发布、调用进程间通信的基本方法、工具和流程显得很重要。在这样的系统需求之下,RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在诸多缺点。而基于消息的异步处理模型则采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待。使用消息中间件作为一个中间层的软件,掌握使用云计算技术来构建独立构件风格的相关技能。

以下题目任意选做一个:

基于 AWS SQS(亚马逊云)或阿里云等简单队列服务的消息中间件,使用 Java,C#或者其他语言分别编写一个发送程序和接收程序(构建两个进程或者程序,一个用于发送消息–发到云端队列,一个用于接收消息–从云端队列订阅下来),实现“点对点”的进程间通信功能。

提示与思考:

AWS 相关基本操作,在另外一个文档中,里面有基本的如何获取 AWS key,以及如何建立

AWS 连接。

前端页面简洁明了,用户体验较好,重点在后台通信机制。

这种消息队列服务是基础性的,AWS 作为商业云平台提供了针对 SQS 的高可用性解决方案。

如果你基于 Kafka 构建消息队列服务,如何确保其高可用性?

相关链接:

AWS .NET API,你可以在该链接找到你想要的类及相关方法 Java API:

SQS 官方文档链接:

基于 AWS SNS(亚马逊云),或阿里云消息推送服务,使用 Java、C#或者其他语言编写一个

发送程序和一个接收程序,实现发布-订阅的选择广播式功能,要求订阅者程序为邮件和 SQS 队列。

发布-订阅模式

基于一款开源 JMS 消息中间件(如 Active MQ、Rabbit MQ、kafaka),使用 Java 编写一个发送程序和接收程序,实现点对点和发布-订阅的选择广播式功能,并进行测试。

JMS 选型参考资料:要求:

程序应具有 GUI,发送程序和接收程序可选择发送和接收方式;

通过对话框可以输入发送消息,接收结果可显示于对话框中。

报告结果中要有对于“点对点”和“发布-订阅”两种模式的比较分析。

实验设计

(给出你的实习内容的设计方案,可根据实际情况调整条目)

系统需求

环境需求:

用户需要在 C:\Users\用户名.aws 目录下设置 credentials 和 config 文件,用以保存自己的 AWS 账号信息。

功能需求:

实现发布-订阅模型,完成一对多的异步消息发送,使用数据流体系风格提高复用性。

质量需求:

在遇到错误指令或者系统内部发生错误后可以显示出来,不会因此导致程序崩溃。

架构设计

图 1 数据流架构设计

接口设计

发布者和发送数据功能之间的接口,仅用来传输数据,发布者无需了解数据以怎样的方式发送出去,只需要发送数据。

发送数据和 AWS 代理之间的接口,仅用来传输数据,发送数据的构件无需了解 AWS 代理如何处理数据,只需要发送数据。

AWS 代理和发送构件之间的接口,仅用来传输数据,发送数据的构件无需了解数据如何发送,只需要将数据传输过去,剩下的无需管理。

接受数据和订阅者之间的接口,数据存储在这里,等用户在线的时候推送到用户眼前。

实验过程

软件实现

首先我将该数据流架构分成了三部分,分别是发布者客户端,AWS代理,以及订阅者客户端。数据从发布者发送,流向AWS代理,最终流向订阅者客户段。每个客户端再分别有向AWS 代理发送数据和向AWS接受数据的功能,由两个客户端分别调用。

客户端:

① 客户端涉及自动登录的步骤,如果没有更新AWS的key的话会导致登录失败,抛出对话框显示错误:

图2 登陆界面

② 登录成功后会显示用户界面,用户界面有文本输入框,发送按钮,邮箱接受按钮,以及 SQS 接受按钮,布局方式如右图所示:

其中,每个功能都有自己对应的构件来执行不同的操作。构件之间并没有直接的联系,之间调用的关系都是通过字符串的传输等方式来进行调用。当点击发送消息后会开启

发送消息线程,消息会

发送到 AWS 代理服务 图 3 用户界面

器,代理服务器再发送给所有订阅者,其中邮箱订阅能够通过 QQ 的提示直接查询到消息,形成同步发送接受的通信。

AWS 代理

AWS代理是在AWS控制台线上完成的,只需要确定主题,连接订阅者,就可以发送数据了。

只要我通过代码访问该AWS上的SNS,传入字符串后,就可以完成分发操作了。

图 4 SNS 界面

SQS 接收端

订阅者(SQS)客户端专门负责接受数据,只需要传入队列的名字就可以查询队列收到的消息,也可以选择删除消息,删除在SQS中所查询到的消息。界面如下图所示:

图 5 SQS 队列接受界面

实验环境

处理器: i7-7700HQ  操作系统:windows10
开发语言:python 实验场景:宿舍 ;3.3 实验步骤  服务器:AWS

首先我分别写出了两个界面,分别对两个界面进行调试,如下图所示:

图 6 三个界面所对应的函数

每个界面我都分别对界面的布局进行了大量的设置(其实个人感觉这些有些多余,不需要特别炫酷的界面,能用就完事了…)

分别测试了界面的按钮功能以及链接亚马逊后的接受和发送功能,都以打印的方式输出在面板上,供以观察是否出现 bug,

如下图所示:

图7 打印出信息

最后分别调试完毕后,将模块通过数据的发送链接起来,再进行微小的错误调试,就完成了。

实验评价

实验结果

本次实验完成了题目 1 和题目 2 的内容,实现了基于管道数据流风格的点对点消息发送和发布订阅者一对多的消息发布,在设计构件的时候尽量实现了构件的独立性,减少与其他构件之间的耦合程度,仅通过数据(即消息字符串)的传输来串联起整个系统。

我所设计的系统类图如下所示:

结果分析

本次实习基本上完成了目标,实现了点对点和发布订阅的异步通信,和学长交流后发现实际中这是一个将异步通信做成同步通信的过程,当发布者发送消息的时候,如果用户刚好在线,那就会收到发布者的消息,如果不在线,也可以等到自己上线后从接收端接受发布给自己的消息。本次实习的订阅者都需要去主动接受消息,实际中应该会有更完善的机制来通知订阅者消息的到达。这就是本次实习略有局限的地方了。

到此这篇关于Python实现一个发送程序和接收程序的文章就介绍到这了,更多相关Python发送程序与接收程序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现一个发送程序和接收程序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python实现电子邮件接收程序(PO

从网络上摘抄的代码:import poplib# 输入邮件地址, 口令和POP3服务器地址:email = raw_input('Email: ')password = raw_input('Password: ')pop3_server
2023-01-31

Android开发中如何实现在一个程序中启动另一个程序

Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如
2023-05-31

如何利用C++实现一个简单的电子邮件发送程序?

如何利用C++实现一个简单的电子邮件发送程序?随着互联网的普及,电子邮件已经成为人们日常生活和工作中不可或缺的一部分。在C++编程中,我们可以利用SMTP(Simple Mail Transfer Protocol)协议实现一个简单的电子邮
如何利用C++实现一个简单的电子邮件发送程序?
2023-11-02

Android编程实现在一个程序中启动另一个程序的方法

本文实例讲述了Android编程实现在一个程序中启动另一个程序的方法。分享给大家供大家参考,具体如下: Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用
2022-06-06

如何实现一个Mybatis程序

这篇文章主要介绍了如何实现一个Mybatis程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境说明:jdk 13MySQL 8.0.22maven 3.8.1开发工具:I
2023-06-20

Python中怎么开发一个Windows程序

今天就跟大家聊聊有关Python中怎么开发一个Windows程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安装py2exe, 这是windows平台下一个非常好的python程序
2023-06-17

Python实现一个简单的验证码程序

老师讲完random函数,自己写的,虽然和老师示例的不那么美观,智能,但是也自己想出来的,所以记录一下,代码就需要自己不断的自己练习,实战,才能提高啊!不然就像我们这些大部分靠自学的人,何时能学会。还有就是,这次听老师的,把自己的代码添加注
2022-06-04

利用JavaMail怎么实现一个邮件发送与接收功能

利用JavaMail怎么实现一个邮件发送与接收功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、JavaMail 介绍  JavaMail 是sun公司(现以被甲骨文收
2023-05-31

用Python实现一个简单的抽奖小程序

目录写在前面 实现结果 1 数据拉取2 数据清洗、去重3 中奖数据抽取python 相关知识点总结写在前面 因为粉丝福利,所以想自己写一个抽奖小程序,用于实现粉丝抽奖结果。原本规划的比较理想:实时拉取评论用户信息数据清洗,数据去重存储
2023-05-12

微信小程序API接收消息和事件怎么实现

今天小编给大家分享一下微信小程序API接收消息和事件怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。接收消息和事件在页
2023-06-26

Python实现监控一个程序的运行情况

目录一、前言二、使用psutil库和subprocess库介绍1.psutil 库2.subprocess 库三、使用psutil库和subprocess库示例程序四、多进程通信一、前言在使用selenium库爬取一些小东西,经常出现程序
2023-05-12

Java中怎么实现一个多线程程序

Java中怎么实现一个多线程程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java多线程程序设计详细解析一、理解Java多线程Java多线程是这样一种机制,它允许在程序中并
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录