UDP轻松应用

一、概述

"用户数据报协议"(User Datagram Protocol,简称UDP)是基于无连接的通信协议,不保证可靠数据的传输;"传输控制协议"(Transmission Cotrol Protocol,简称TCP)是基于连接的通信协议,可提供个两台计算机之间可靠无差错的数据传输。但是UDP能够向若干台目标计算机发送数据;接收发自若干个源计算机的数据。而在多台计算机构成的仿真或控制系统中,经常会出现多台计算机进行数据传输,所以在仿真或控制软件中采用UDP协议的较多。

二、代码说明

为了便于说明仿真或控制中对多个变量的传输,采用结构体的数据结构形式。创建两个工程分别为发送Send工程和接收工程。其中发送数据的工程代码为:

void CSendDlg::OnButtonSend() //发送数据
{

  //发送数据、对象定义
  struct _PLATFORM
    {
      int err_num;//故障代码
      //控制(仿真)参数
      int sj;
      int hy;
      int zy;
    } Platform,*pPlatform;
  CSocket m_SendSocket;//构造一个套接字对象
    //发送数据的初始化
  Platform.err_num=0;//系统正常
  Platform.sj=200;
  Platform.hy=300;
  Platform.zy=100;
  pPlatform=&Platform;
  //数据发送
  m_SendSocket.Create(2330,SOCK_DGRAM);//创建一个套接字句柄(UDP)
  m_SendSocket.SendTo( pPlatform,sizeof(Platform),3550,"127.0.0.1");//发送数据给本地计算机
}

接收数据的工程代码为:

void CReceiveDlg::OnButtonReceive()
{

  //数据、对象定义
  struct _PLATFORM1//为了区别于发送数据的数据结构
    {
      int err_num1;//故障代码

      //控制(仿真)参数
      int sj1;
      int hy1;
      int zy1;
    } Platform1,*pPlatform1;
  CSocket m_ReceiveSocket;
  char *buff1[256];
  CString str1;
  CString str2;
  CString str3;
  CString str4;
     //接收数据
  m_ReceiveSocket.Create(3550,SOCK_DGRAM);
  m_ReceiveSocket.Receive(buff1,256);
  //接收数据的测试
  pPlatform1=(struct _PLATFORM1*)buff1;//非常关键
  str1.Format("%d",Platform1.err_num1=pPlatform1->err_num1);
  str2.Format("%d",Platform1.sj1=pPlatform1->sj1);
  str3.Format("%d",Platform1.hy1=pPlatform1->hy1);
  str4.Format("%d",Platform1.zy1=pPlatform1->zy1);
  AfxMessageBox(str1);
  AfxMessageBox(str2);
  AfxMessageBox(str3);
  AfxMessageBox(str4);
}

程序执行时,要先触发"接受数据"按钮再触发"发送数据"按钮可以得到通过UDP协议传输的结构体数据。

时间: 2024-11-01 10:27:52

UDP轻松应用的相关文章

了解基本网络测试命令 轻松应对网络故障

作为一般的互联网使用者,网络突如其来的故障使我们 感到很头痛,不仅影响我们的使用, 还会带来不必要的损失, 所以简单的了解一下基本的网络测试命令,对于我们来说也是一件好事,可以节省时间及提高工作效率.今天,笔者粗浅的列举一些最常用的网络故障测试命令,希望可以给大家一些参考.目前最为常用的网络测试命令,今天向大家介绍5个,它们是:Ping Tracert Netstat IPconfig Nslookup,下面笔者就分别把它们的使用方法介绍一下.PingPing是最为常用的测试网络故障的命令,它是

没想到你是这样的UDP

UDP是国际标准化组织为互联网设定的标准中的传输层中的一个协议.TCP/IP协议簇是一个很庞大的家族,但是今天我们就来看一看这个面向无连接的传输层在Java中是怎样通过编程实现的. 原理性知识 在Java中编写基于UDP协议的应用是最简单不过的了,我们只需要按照这几个特定的步骤就可以完成了.因为在Java中,已经将底层的协议信息全部封装了起来,对我们这些在应用层上的开发人员来说是透明的.通过API中给出的接口,我们可以轻松的开发出一款简单的小应用. 实现的流程 从逻辑上来说,如下图: 表现在代码

python网络编程之数据传输UDP实例分析

  本文实例讲述了python网络编程之数据传输UDP实现方法.分享给大家供大家参考.具体分析如下: 一.问题: 你觉得网络上像msn,qq之类的工具在多台机器之间互相传输数据神秘吗?你也想玩一下在两台机器之间传数据吗?今天让python告诉我们基本原理吧,当然只是做简单的了解,实际情况复杂的多. 我们今天用python实现一个简单的udp程序. 二.程序实现: 1) 使用模块 (socket)套接字模块: 套接字模块是一个非常简单的基于对象的接口,它提供对低层BSD套接字样式网络的访问 .使用

Win7资源管理器丰富功能轻松方便

  资源管理器是大家熟悉和常用的Windows文件查看和管理工具,和之前的Windows版本相比,Win7的资源管理器提供了更加丰富和方便的功能,比如高效搜索框.库功能.灵活地址栏.丰富视图模式切换.预览窗格等等,可以有效帮助我们轻松提高文件操作效率. 按下快捷键"Win+E"就可以快速打开Win7资源管理器.Win7资源管理器窗口左侧的列表区包含收藏夹.库.计算机和网络等资源,如果设置有家庭组还会有家庭网组等其他项. 方便收藏夹 在"收藏夹"里,我们可以迅速看到&

udp java-JAVA UDP协议下怎么样才能突破局域网内的双向通信啊?求高人务必指导下。。。。

问题描述 JAVA UDP协议下怎么样才能突破局域网内的双向通信啊?求高人务必指导下.... 本人是个接触JAVA2个月的菜鸟,最近在研究UDP广域网的通信,实现的过程也就是常说的双向通信:客户端(局域网内)先发数据给远方的服务器(服务器是公网IP,映射了个端口),服务器能收到,但是服务器不能回发数据给客户端...对于这方面的问题,在网上找了很多资料,全是局域网内的,网上说什么UDP打洞啊,穿透啊等等的,说实话有点晕,直到有一天在网上一个论坛看到同样类似的帖子,主人说根本就不需要什么UDP打洞这

借用WINDOWS快捷键轻松启动WPS方法

  WPS办公软件在桌面上有三个快捷方式,分别是WPS文字.WPS表格和WPS演示,鼠标双击就可以打开相应的程序,当桌面上的图标弄没了,就不得不在"开始"菜单的一大堆程序列表中查找点击来启动WPS,有没有试过,不用鼠标也能启动WPS呢? 只要借用一下WINDOWS的快捷键就可以轻松的启动WPS了:按下Win+R键,输入:WPS.et或WPP(如图所示),确定,就可以分别快速启动对应的WPS文字.WPS表格或WPS演示.怎么做到的呢?这是因为WPS会在注册表中的[HKEY_LOCAL_M

在火狐中体验轻松支付:抛弃网银

大家还在因为在Firefox火狐浏览器里无法进行网购.订票.在线缴费而困扰么?还在纠结于每次到网银付款的时候,都要切换到IE浏览器或者IE Tab么?那你就out了.现在已经有很多支付产品和支付方式,都可以帮助大家在火狐浏览器中轻松进行网购支付.下面,小编就来带领大家一起来体验一下两种比较常用的在线支付产品:支付宝快捷支付和财付通一点通. 体验一:使用支付宝的快捷支付功能 现在支付宝提供的快捷支付功能,可以支持绝大部分银行的储蓄卡和信用卡,通过与支付宝绑定,直接付款,无需登录只支持IE内核浏览器

实例-UDP协议为何是11教材说17

问题描述 UDP协议为何是11教材说17 根据前面所介绍的方法,下面给出一个具体的实例进行分析:7E21 45 00 001D 47F3 0000 80 11 B0F6 0A4A30E0 D350336C 03E8 03F2 0009 55 1B61 A5DE 7E 7E21为PPP包头,4表示旧版本号5表示首部长度,00表示服务类型,001D表示包的All长度47F3表示16位的标识,0000表示3位的标志+13位的片偏移,80表示TTL,11表示协议(11表示UDP协议,TCP为06),B0

轻松hold住双11数据洪峰背后的秘密

双11刚刚拉下帷幕,激动的心还停留在那一刻--当秒针刚跨过11号零点的一瞬间,来自线上线下的千万剁手党在第一时间涌入了这场年度大趴--从进入会场到点击详情页,再到下单付款一气呵成. 前台在大家狂欢的同时,后台数据流量也正以突破历史新高的洪峰形式急剧涌入:- 支付成功峰值达 25.6 万笔/秒 - 实时数据处理峰值 4.72亿条/秒 而作为实时数据处理任务中最为重要的集团数据公共层(保障着业务的实时数据.媒体大屏等核心任务),在当天的总数据处理峰值更是创历史新高达1.8亿/秒! 想象下,1秒钟时间