Windows编程之网络之邮件槽通讯

第6节 使用邮件槽传输数据

网络通讯的理论很复杂,可是初学者不考虑性能的话,可以使用很简单的模式。一般而言网络通讯有两种模式,点对点模式或者广播模式。点对点模式就像一对一辅导,双方都能听清楚对方说什么,并作出相应的处理,若是因网络故障丢失数据,双方都知道中间出了问题,可以重新发送数据来解决这个故障;广播模式就像课堂教学,老师无法确信受众们都听清了所说的内容,若某个同学因某种原因而丢包,老师并不知道这个包已经被丢失了。

邮件槽分为收件箱和发件箱两类。收件箱接收网络上发来的邮件包,而发件箱向其他电脑(也可以是本机)发送邮件。发送邮件时,需要指定接收者的IP地址,或者使用表示广播给全局域网的收件箱;接收数据稍微复杂点,因为必须事先建好收件箱(CreateMailslot)其他人发给你的邮件才有可能收到,若是其他人发邮件时该收件箱已经被注销,那么就收不到邮件了。在建立邮件槽的时候,邮件槽必须具有下面的形式:\.\mailslot[path]name这个形式中,前缀\.\mailslot\是必不可少的,而且注意都是小写字符。写到C语言程序里,就应该是这样的形式"\\.\mailslot\"。其中的.表示本地计算机。若是想把消息包发送到远程计算机,远程计算机的邮件槽具有“\Computername\mailslot"这样的形式,若是想要广播到全局域网,则应使用"\\mailslot"这样的形式。当然,本地计算机没有创建远程邮件槽的权利,因此不用使用CreatMailslot函数,若想要发送到远程计算机,则使用CreateFile就可以了。

本地计算机名称可以通过GetComputerName函数获得。代码没有给出,请同学们自行查询帮助。

下面以一个共享画板为例。参与画板的每个人可以选择一种颜色画笔,然后在公共画板上做图。程序通过邮件槽共享鼠标信息,程序中使用了公共对话框来选择一种颜色;

订正:

由于使用了公共对话框,因此在程序的包含文件中增加一项#include:
在这里插入图片描述
另,若对程序中不停出现的4996号Warning感到厌烦,可添加上图中最后一行的#pragma命令。

在WinLearn中新建工程WinStep3;

1、在菜单中添加一个顶层菜单,然后在顶层菜单下添加4个子菜单,如图:
在这里插入图片描述
图1 菜单设计
在这里插入图片描述
表2 菜单项设置

2、在快捷键表中添加4个快捷键。
在这里插入图片描述
图2 快捷键设计

3、设计网络消息。
在这里插入图片描述
程序片段24 网上传输的消息
在这里插入图片描述
程序片段25 全局变量
在这里插入图片描述
程序片段26 主程序,注意其中左侧特出的地方为初始化

4、 消息处理函数WndProc部分代码。
在这里插入图片描述
程序片段27 鼠标左键按下时记录上次的点
在这里插入图片描述
程序片段28 对选择画笔的菜单项的代码
在这里插入图片描述
程序片段29 鼠标移动时画出轨迹并广播
在这里插入图片描述
程序片段30 每隔50ms检索广播消息并直接画出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 批量处理 示例_Java异常处理教程(包含示例和最佳实践)

java 批量处理 示例异常是可能在程序执行期间发生的错误事件,它会破坏其正常流程。 Java提供了一种健壮且面向对象的方式来处理异常情况,称为Java异常处理 。 我们将在本教程中研究以下主题。 Java异常处理概述 异常处理关键字 异常层次 有用的异常方…

Windows编程之多媒体

一、语音接口的使用: 第一步,安装MSSpeech SDK。 MSSpeech SDK可从网络课堂安装,也可在微软公司直接下载,安装完毕后具有了语音处理能力。 安装过程全选默认即可。 安装完毕后,在开始菜单中会增加MS Speech SDK 5.1&#xff0…

Windows编程之调用Matlab

一、选择matlab: 注意。Matlab的安装需要较长时间,建议本拓展在同学们自己的电脑上运行。 Matlab是大多数工科学生必修的科目,是一个口碑极佳的数学计算工具,可以支持立即运算和程序设计两种形式。Matlab较新的版本均提供32位版本…

Windows编程之使用外部动态链接库——纸牌

C语言功能强大的一个重要原因是因为具有丰富的库函数,例如字符串处理有string库,数学处理有math库。微软公司对程序库的支持又更进一步,提供了丰富的动态链接库。下面以微软操作系统内嵌的纸牌链接库为例写一个简单的小程序。 由于我们已经较…

netbeans7.4_使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试

netbeans7.4在上一篇文章中 ,我写了NetBeans 7.4 beta中提供的提示 ,这些提示提高了开发人员避免Java异常处理带来的讨厌的运行时问题的能力。 在本文中,我将探讨如何使用NetBeans 7.4 beta提供的另外两个提示使单元测试在执行单元测试期间更…

【MATLAB函数系列】fskmod函数参数及源代码详解

关注回复【fskmod】可看 在用matlab仿真生成fsk信号时,发现matlab库提供fskmod函数可以直接生成fsk信号,但生成的信号为复信号,于是查看其源码,结果对其原理看了好久都没明白,在网上查询资料也少得可怜,唯一…

Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法

LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器。 在许多项目中,我们需要通过登录屏幕中提供的凭据使用LDAP对活动目录进行身…

【各种信噪比联系与区别详解】实信号、复信号Es、N0、符号信噪比EsN0、带内信噪比、比特信噪比EbN0、SNR的含义及关系详解

引言 关于EsN0、EbN0与SNR三者关系的描述,在MATLAB帮助文档中搜索词条“AWGN Channel”有比较详细的描述,但有些细节没有讲清楚。 简单翻译解释一下,就是 SNR表示每个采样点的信号噪声比。EbN0表示每个比特能量与噪声功率谱密度的比值。EsN0表示每个符号能量与噪声功率谱密…

非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛

写在前面:①大佬勿在意,小打小闹!②若不决参加与否,希望下文可以给你帮助(仅限程序设计赛项)。 文章目录一、个人真实情况二、比赛最细简介三、最全参赛准备四、比赛时候遇到不会做怎么办?一、个…

加密数据的检索_透明地持久保存并从数据库中检索加密的数据

加密数据的检索自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集。 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在相当紧张的住院期间&…

微信小程序云开发日记类日记记录分享动态

微信公众号:创享日记(微信号csds992022) 发送关键词:日记类小程序 免费获取源码 1 概述 1.1 关于本手册 为了使您对研岸日记记录社交软件的使用有清晰详尽的了解,特此编写《用户手册》,为了保障您的利益&a…

Windows编程初步(三)【说明:有敏感字眼已全删,不知道为啥还审核不通过】

第三节 设计输出及利用在线帮助 在Windows中,消息ON_PAINT是专门用来处理输出的。基本所有的输出代码应放在这里。 。其输出方式不再限于从上往下,而是全屏可控,因此每个输出都需要告知系统输出位置。典型的文字输出代码是TextOut函数。 将…

408考研数据结构复习-时间复杂度与空间复杂度-附统考真题

文章目录一、时间复杂度二、空间复杂度三、相关题目一、时间复杂度 一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中基本运算(最深…

解调去载波后均衡信道与实际信道的关系

关注公号【逆向通信猿】更精彩!!! 通常,信号经过调制后发送,会经过信道作用,示意图可以表示为 其中 x ( t ) x(t) x(t)为基带信号, e

第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java

【问题描述】 对于一棵多叉树,我们可以通过 “左孩子右兄弟” 表示法,将其转化成一棵二叉树。如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。换句话说,每个结点可以选任意子结点作为左孩子,并按任…

activiti脚本任务_Activiti中的高级脚本:自定义配置注入

activiti脚本任务脚本任务可能是Activiti代码库中“最古老的”类之一,但是我认为它仍然未被许多人使用。 (感知到的)缺点当然是性能(解释还是编译),并且从IDE角度来看支持较少。 但是,好处&…

【锁相环系列3】QPSK+基带+Costas锁相环载波同步(重点环路滤波器参数设置和迭代核心代码详解)

引言 假设在QPSK信号解调中,完成匹配滤波、定时抽样后的星座如下所示 而画出基带信号部分点的星座图如下所示 由以上两幅图可以看出,基带信号中还存在微小的频偏,导致星座图旋转,而这种微小的频偏很难通过FFT估计出来,由此想到了用锁相环解决,锁相环锁定后的星座如下 …

线性移位寄存器序列(m序列)之MATLAB实现

移位寄存器的结构 nnn级线性移位寄存器的结构如下图 当生成多项式g(x)g(x)g(x)为本原多项式时,产生的序列为m序列。例如 g(x)x5x21g(x)x^5x^21g(x)x5x21的本原多项式,初态为10000的5级m序列,其周期为25−1312^5-13125−131,结构如…

scala和java像不像_关于Java和Scala同步的五件事你不知道

scala和java像不像实际上,所有服务器应用程序都需要在多个线程之间进行某种同步。 大多数同步工作是在框架级别为我们完成的,例如通过我们的Web服务器,数据库客户端或消息传递框架。 Java和Scala提供了许多组件来编写可靠的多线程应用程序。 …

BPSK调制下(2,1,6)标准卷积码及打孔生成2/3、3/4、4/5、5/6删余码Viterbi译码误码率曲线图(MATLAB实现)

关注公号【逆向通信猿】更精彩!!! 目录 仿真结果卷积码原理图删余后性能比较常用的删余码仿真代码根据码率生成打孔参数(子函数)将标准(2, 1, 6)编码后的序列进行打孔,生成删余码(子函数)对接收到的序列进行反打孔,将原来打孔删除的比特进行补零(子函数)BPSK调制下(2,1,6…