摘要:本文将带你了解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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号