c++通信---最简单的UDP程序
来源:互联网 发布:js 三个等号 编辑:程序博客网 时间:2024/05/16 18:58
转自:http://www.vckbase.com/index.php/wv/1004
一、概述
"用户数据报协议"(User Datagram Protocol,简称UDP)是基于无连接的通信协议,不保证可靠数据的传输;"传输控制协议"(Transmission Cotrol Protocol,简称TCP)是基于连接的通信协议,可提供个两台计算机之间可靠无差错的数据传输。但是UDP能够向若干台目标计算机发送数据;接收发自若干个源计算机的数据。而在多台计算机构成的仿真或控制系统中,经常会出现多台计算机进行数据传输,所以在仿真或控制软件中采用UDP协议的较多。
二、代码说明
为了便于说明仿真或控制中对多个变量的传输,采用结构体的数据结构形式。创建两个工程分别为发送Send工程和接收工程。其中发送数据的工程代码为:
01.
void
CSendDlg::OnButtonSend()
//发送数据
02.
{
03.
04.
//发送数据、对象定义
05.
struct
_PLATFORM
06.
{
07.
int
err_num;
//故障代码
08.
//控制(仿真)参数
09.
int
sj;
10.
int
hy;
11.
int
zy;
12.
} Platform,*pPlatform;
13.
CSocket m_SendSocket;
//构造一个套接字对象
14.
15.
//发送数据的初始化
16.
Platform.err_num=0;
//系统正常
17.
Platform.sj=200;
18.
Platform.hy=300;
19.
Platform.zy=100;
20.
pPlatform=&Platform;
21.
22.
//数据发送
23.
m_SendSocket.Create(2330,SOCK_DGRAM);
//创建一个套接字句柄(UDP)
24.
m_SendSocket.SendTo( pPlatform,
sizeof
(Platform),3550,
"127.0.0.1"
);
//发送数据给本地计算机
25.
}
接收数据的工程代码为:
01.
void
CReceiveDlg::OnButtonReceive()
02.
{
03.
04.
//数据、对象定义
05.
struct
_PLATFORM1
//为了区别于发送数据的数据结构
06.
{
07.
int
err_num1;
//故障代码
08.
09.
//控制(仿真)参数
10.
int
sj1;
11.
int
hy1;
12.
int
zy1;
13.
} Platform1,*pPlatform1;
14.
CSocket m_ReceiveSocket;
15.
char
*buff1[256];
16.
CString str1;
17.
CString str2;
18.
CString str3;
19.
CString str4;
20.
21.
//接收数据
22.
m_ReceiveSocket.Create(3550,SOCK_DGRAM);
23.
m_ReceiveSocket.Receive(buff1,256);
24.
25.
//接收数据的测试
26.
pPlatform1=(
struct
_PLATFORM1*)buff1;
//非常关键
27.
str1.Format(
"%d"
,Platform1.err_num1=pPlatform1->err_num1);
28.
str2.Format(
"%d"
,Platform1.sj1=pPlatform1->sj1);
29.
str3.Format(
"%d"
,Platform1.hy1=pPlatform1->hy1);
30.
str4.Format(
"%d"
,Platform1.zy1=pPlatform1->zy1);
31.
AfxMessageBox(str1);
32.
AfxMessageBox(str2);
33.
AfxMessageBox(str3);
34.
AfxMessageBox(str4);
35.
}
程序执行时,要先触发"接受数据"按钮再触发"发送数据"按钮可以得到通过UDP协议传输的结构体数据。
三、图像描述
发送数据的工程和接收数据的工程如图一和图二所示:
图一 发送数据界面图
创建一个按钮,ID为"IDC_BUTTON_SEND",标题为"发送数据"。
图二 接收数据界面图
创建一个按钮,ID为"IDC_BUTTON_RECEIVE",标题为"接收数据"。右边的消息对话框为接收的数据显示。
四、结束语
本文为了简单的描述UDP通讯的过程,将发送数据和接收的数据结构和套接字都定义在对应的消息函数体内,一般声明是放在头文件中的。发送数据和接收数据仅通过调用套接字的三个函数Create()、SendTo()和Receive()就满足了仿真和控制参数数据的传输,应用起来简单易行。
- c++通信---最简单的UDP程序
- 最简单的UDP程序
- 最简单的UDP程序
- 一个最简单的UDP通信
- UDP通信的简单实现(程序)
- 非常简单的UDP通信程序,C#
- VC6.0控制台程序下实现最简单的UDP网络通信
- 简单的UDP通信
- 简单的UDP通信
- C/S最简单的socket通信
- 最简单的C#socket通信
- linux下简单的UDP对等通信程序
- Linux C实现简单的UDP服务器客户端通信
- Linux下C语言实现简单的udp通信
- 简单的UDP通信方式
- 简单的 Winsocket UDP 通信
- Linux下UDP简单通信程序
- C#--简单的串口通信程序
- Magento中直接使用SQL语句
- 在任何设备上都完美呈现的30个华丽的响应式网站
- mysql 数据表大小写敏感问题
- 高并发服务器的设计--架构与瓶颈的设计
- 深入理解Magento – 第七章 – 自定义Magento系统配置
- c++通信---最简单的UDP程序
- c++面试---C++和操作系统面试问题分类1
- HDOJ 1286 找新朋友 应该比较好的解法吧~
- QT210 驱动 流水灯
- java多线程
- 上传文件存储策略
- 生成随机数|打乱数组 问题
- java实现统一账户同一时间只能在一个地方登陆
- 2. Oracle的内存管理