C#编程之数据报编程之测试程序
白羽 2018-07-10 来源 :网络 阅读 1150 评论 0

摘要:本文将带你了解C#编程之数据报编程之测试程序,希望本文对大家学C#/.Net有所帮助。


C#数据报编程比Java要简洁一些,至少类的数量少了:System.Net.Sockets名称空间中提供了一个UDPClient类用于处理单播,广播和组播.处理方式为:

单播:RS两端指定相同端口,数据报头中包含普通IP地址和端口,即可实现.

广播:RS两端指定相同端口,数据报头中包含广播地址和端口,即可实现.

组播:RS两端指定相同端口,R端要调用JoinMulticastGroup方法加入组,数据报头中包含组播地址和端口,即可实现.

本程序结构分两层,上层定义发送的任务,下层负责传输.

上层负责处理数据分割及组装,每片固定大小,分报头和数据区.报头包括源IP,源端口,片标识,总片数,片序号,数据区实际长度,数据总长度,报类型和一些可扩展属性,这里可加入自定义控制信息(使用命令模式,对每个动作对应动作处理器,这些位于上一层了).

下层仅仅是数据交换,接收和发送分别对应一个主动类,发送和接收的任务都位于队列中.在这两个类中,向上层发送三个消息:S端的数据开始接收,数据接收结束;R端的数据抵达.在上层会产生两个消息:开始接收数据和数据接受完毕.

在两个层中起支柱作用的类是任务管理器.

下面先定义这些事件.

C#中自定义事件

C#语言中有77个关键字,其中delegate和event专门为C#中事件处理系统提供的。

delegate声明定义一种引用类型,该类型可用于将方法用特定的签名封装。委托实例封装静态方法或实例方法。委托大致类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。

event指定一个事件。在C#的类中存在以下成员:域(Fields)、属性(Properties)、方法(Methods)、索引(Indexs)、事件(Events),其中事件(Events)成员就是用来声明一个类事件的。在类中声明一个事件成员一般采用如下的语法形式:public event 委托名 事件名。

本程序是UDP通信的UI测试程序,负责接收数据报文,下面是消息定义代码,首先定义委托,然后定义事件类。

在文件Delegate.cs中定义五个委托:

namespace Communication
{

 public delegate void DgOnSendDataStart(object sender,UDPEvent e);//数据发送开始代理。
 public delegate void DgOnSendDataFinished(object sender,UDPEvent e);//数据发送完毕代理。
 public delegate void DgOnDataArrived(object sender,UDPEvent e);//数据抵达代理。
 public delegate void DgOnStartRecv(object sender,UDPEvent e);//开始接收数据代理。
 public delegate void DgOnFinishedRecv(object sender,UDPEvent e);//数据接受完毕代理。

自定义事件类:

SendEvent也位于这个文件中,包括一个消息属性和字节数组以及一个任务管理器.

 public class UDPEvent:EventArgs
 {
  string msg="";
  private byte[] recvdata=null;
  private TaskManager1 tm;

  public SendEvent(){}
  public string Msg
  {
   set
   {
    msg=value;
   }
  }
  public byte[] RecvData
  {
   set
   {
    recvdata=value;
   }
   get
   {
    return recvdata;
   }
  }
  public TaskManager1 taskManager
  {
   set
   {
    tm=value;
   }
   get
   {
    return tm;
   }
  }
 }

新事件类和五个委托定义完毕.


以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程