在WINCE上实现UDP通信(100%可行!)

QUIC双向认证与DDS代理优化技术详解 传输层安全协议TLS 1.3为现代网络通信提供了基础加密保障,其双向认证机制通过数字证书验证实现通信双方身份鉴别。QUIC协议在此基础之上创新性地引入0-RTT快速重连和ECDHE前向安全加密,显著提升物联网边缘计算场景下的安全性能。在工业物联网领域,DDS协议通过IDL代码生成器实现与MQTT生态的高效互通,结合QoS转换矩阵保障不同可靠性要求的业务场景。本文以NanoMQ实现为例,详解QUIC双向认证配置要点和DDS-MQTT代理的序列化优化方案,涵盖证书链验证、主题映射策略等工程实践内容,并给出5G/ 阅读详情

本文来自:http://blog.youkuaiyun.com/hellogv/ 


首先介绍一下,开发平台:WINCE 4.2 (WINCE 5.0也适用,因为使用了静态编译MFC动态链接库);开发工具:VS2005。

  以下的代码,来自中国水利水电出版社(www.waterpub.com.cn)的《EVC高级编程及其应用开发》这本书,若想实现WINCE的UDP通信,请先到水利水电出版社下载原本的UDP编程代码。当然,你懒得修改的话,可以直接到http://download.youkuaiyun.com/source/282307 下载我已经弄好的实例代码。

  接下来开始修改代码:

1.修改UDP_CE.CPP的SendData函数为:



bool CUDP_CE::SendData(const char *buf, int len)

{

 int nBytes = 0;

 int nErrorCode;

 nBytes = sendto(m_UDPSocket,buf,len,0,(sockaddr*)&m_RemoteAddr,sizeof(m_RemoteAddr));  

 if (nBytes==SOCKET_ERROR ) 

 {  

  nErrorCode = WSAGetLastError(); 

  m_OnUdpError(m_pOwnerWnd,nErrorCode); 

  return false; 

 }

 return true;

}



当然,不要忘记修改UDP_CE.h的SendData函数声明为:bool SendData(const char *buf, int len);



2.修改UDP_CE.CPP的RecvThread函数为:



...............



  if (ret > 0)

  {

   if (FD_ISSET(pSocket->m_UDPSocket,&fdRead))

   {

    

                tmpAddr.sin_family=AF_INET;            

                tmpAddr.sin_port = htons(pSocket->m_RemoteAddr.sin_port);

    tmpAddr.sin_addr.s_addr =INADDR_ANY;

                tmpRecvLen = sizeof(tmpAddr);

    

    

    recvBuf = new char[1024];

    recvedBuf = new char[1024];

    ZeroMemory(recvBuf,1024);

    ZeroMemory(recvedBuf,1024);

    recvLen = recvfrom(pSocket->m_UDPSocket,recvBuf, 1024,0,(SOCKADDR*)&tmpAddr,&tmpRecvLen);

    if (recvLen == SOCKET_ERROR)

    {

     iErrorCode = WSAGetLastError();

     pSocket->m_OnUdpError(pSocket->m_pOwnerWnd,iErrorCode);

     break;

    }

    else if (recvLen == 0)

    {

     iErrorCode = WSAGetLastError();

     pSocket->m_OnUdpError(pSocket->m_pOwnerWnd,iErrorCode); 

     break;

    }

    

    else

    {

     //此处添加解析程序,将接收到的数据解析后,

                    pSocket->m_OnUdpRecv(pSocket->m_pOwnerWnd,recvBuf,recvedBufLen,(SOCKADDR*)&tmpAddr);

     delete []recvBuf;

     recvBuf = NULL;

     delete []recvedBuf;

     recvedBuf = NULL;

    }

    

   }



3.修改UDPDlg.cpp.CPP的OnUdpCERecv函数为:



 CUDPDlg * pDlg;

 pDlg = (CUDPDlg*)pWnd;

 CEdit *pRecvStrEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDIT_RECVSTR);

 ASSERT(pRecvStrEdit != NULL);

 CString strRecv (buf);

 pRecvStrEdit->SetWindowText(strRecv);



4.删除UDP_CE.H,不是必须,但可以节省多余的代码

typedef struct CUDPData

{

 char  FrameHead[4]; //帧头

 DWORD DataPackageLen;  //帧长度

 char * Buf;     //缓冲区数据

    char FrameTail[4];   //帧尾

}UDPData;

还可以删除窗体上发送、接收数字的编辑框等,因为实际应用中用不上。

DM9000A、LAN9115与LAN91C111以太网控制器选型与实战指南 以太网控制器是嵌入式系统实现网络连接的核心组件,其选型直接影响硬件设计与系统稳定性。从原理上看,控制器通过Local Bus等接口与主控芯片通信,其接口时序、功耗和驱动支持是决定技术价值的关键。在工程实践中,合理的选型能显著降低硬件复杂度与软件适配难度,尤其在高网络负载或成本敏感的应用场景中至关重要。本文聚焦于DM9000A、LAN9115和LAN91C111这三款经典芯片,深入对比其物理封装、时序要求和驱动生态等核心维度,并结合**Local Bus接口时序收敛**与**TCP/IP硬件加速**等热词,剖 阅读详情

相关推荐

wince 下UDP通讯PC端

wince 下UDP通讯PC端 UdpCom

WINCE设备UDP SOCKET开发体会

WINCE UDP 服务器 终端 开发 小结

give me five 2036

WinCE环境下UDP通信机制的研究与实现

WinCE环境下UDP通信机制的研究与实现

基于VC++的WinCE网络通信

基于VC++的WinCE网口通信 WinCE下的网络编程与Windows下的非常类似,只是个别API函数有所不同。同样分为UDP和TCP两种,UDP就是无连接的通信,通过“用户数据报协议”(UDP)来完成的;而TCP是有连接的,即传输控制协议,实现无差错无重复的顺序数据传输。 一、UDP编程 UDP编程相对简单:首先调用socket函数创建数据报套接字,然后调用bind函数绑定本地地址后,接

子寒 765

Wince下的TCP与UDP的Demo

Pocket PC 2003 (ARMV4)下的TCP与UDP的Demo,封装了UDP和TCP的操作,使用选择模式处理,提供了TCP下的客户端和服务器端,修改下就可以在wince上面使用了。

wince UDP 客户端案例 C#版

wince UDP 客户端案例 C#版

UDP 通讯代码

在使用RAS使用拨号网络拨号的类建立 TCP/IP后,接下来是通过 TCP/UDP 进行数据的传输。 下面是使用 UDP 的例子,分为头文件和源代码 头文件zhUDPCE.h: 1 // UDP.h: interface for the CZhUDP class. 2 // 3 /////////////////////////////////////////...

weixin_30580341的博客 157

WINCE上UDP通信

本实例代码,演示了如何使用VS2005开发基于WINCE4.2的UDP程序

udp接收发送数据程序以及注意事项

ctrl alt T 调出终端,输入以上代码,IP要写目的地址,先运行服务器端,再运行客户端,因为需要UDP服务器端先绑定信息,并开始接收。5.若写udp_ser_socket.sendto(b’Ubuntu’.,client_address)7.UDP必须先一方先接收,另一方才能发送,且接收和发送是必须是成对的。8.写代码,IP地址一定要对应好,否则会出错。1.绑定bind 后查看本地端口的状态。6.注意方法名别输错比如sento。二.如何创建socket。引号里面就不应该带汉字。3.收发数据注意转换。

chanbaek1688的博客 2996

WinCE实现UDP通信程序

通过WinCE开发的UDP通信程序,通过改程序了解WinCE的网络通信开发,是个很好的启迪程序,内部代码清晰完整

零代码实战:基于Coze平台打造测试用例生成AI助手

本文详细介绍了如何利用Coze平台零代码打造测试用例生成AI助手,通过智能体和工作流配置,实现需求文档自动解析与结构化测试用例生成。该方案显著提升测试效率,特别适合敏捷开发中频繁变更的需求场景,帮助测试工程师快速应对挑战。

weixin_42526015的博客 209

基于wince的网络音视频通信(简单易明版)

本文来自http://blog.youkuaiyun.com/hellogv/ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator"

编程开发资料库 139

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

视频监控p2p android,网络视频监控P2P解决方案:NAT穿越

NAT的穿越并非安防监控领域的技术,是目前VOIP以及即时通信等产品的基础性技术,目前来讲已经比较成熟,且有完整的技术标准RFC,同时也有众多的实现方案,包括许多已经得到广泛应用的开源项目。简单来讲,实现NAT的穿越是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接近100%,TCP则存在一些情况无法实现穿越,主要受限路由器的端口映射机制。要实现NAT穿越,需要有穿...

weixin_39988779的博客 758

论文笔记--Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting

Summary 在交通预测问题上,现有的框架通常利用给定的空间邻接图和复杂的机制来建模空间和时间关联。作者认为使用给定的空间邻接图会限制模型的有效时空相关性学习,并且它们通常使用单独的模块来实现空间和时间相关性,或者只使用独立的组件来捕获局部或全局的异质依赖关系,割裂了时空依赖关系。为此作者提出一种时空融合图神经网络用于交通预测。提出一种数据驱动的“时间图”生成方法,以此来补偿空间图可能没有反映的相关性。提出一种新的交通预测方法。 Problem Definition 交通预测中的挑战 以上图为

chenxino的博客 1755

告别理论!手把手教你用Patran/Nastran搞定悬臂翼的颤振分析(附完整模型文件)

本文提供了一份详细的Patran/Nastran悬臂翼颤振分析实战指南,涵盖从几何建模到结果解读的全过程。通过手把手教学和完整模型文件,帮助工程师和学生快速掌握气动弹性分析技术,特别适合需要实际操作的初学者。文章重点介绍了模态分析、气动建模和颤振求解等关键步骤,并提供了常见问题排查和优化建议。

weixin_30879169的博客 492

从Ping不通到路由表冲突:图解TwinCAT网络连接全流程避坑指南

本文详细解析了TwinCAT网络连接中的常见问题,从Ping不通到路由表冲突,提供了全面的排查方法和解决方案。通过图解和实例,帮助工程师快速定位倍福(Beckhoff)控制系统中的网络故障,优化ADS通信配置,确保工业自动化系统的稳定运行。

weixin_26789847的博客 372

SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase

随着去“IOE”化的潮流,近些年来,许多与国家相关的项目不约而同到地往”国产化“方向靠拢,不可避免地,一些项目可能需要进行数据库迁移。

4620

WinCE UDP 问题

WindowsCE下采用UDP进行通讯(基于EVDO或GPRS)。 UDP接收线程中检查一事件,用于退出数据接收。接收部分的代码省略...... 1 UINT CeUDP::RecvThread(LPVOID lparam) 2 { 3 while (TRUE) 4 { 5 //收到退出事件,结束线程 6 ...

weixin_30532973的博客 188

解决Gradle中NPM命令失效问题

摘要:本文分析了IntelliJ IDEA中Gradle执行npm命令失败的问题,报错显示"npm"文件不存在。通过确认npm安装路径、检查系统PATH与Gradle环境的差异,提出两种解决方案:1) 在build.gradle中使用npm绝对路径;2) 通过launchctl修改用户PATH。实例展示了如何修改Gradle脚本或系统配置来解决该问题,指出跨平台开发中环境变量配置的重要性。文章为开发者提供了处理类似问题的实用方法。

2501_90323865的博客 90

【网络安全】Python代码审计高危函数与安全审计建议

Python 灵活且动态的特性使得开发便捷,但同时也带来了严重安全隐患。如果开发者缺乏安全意识,极易引入命令执行、反序列化漏洞及模板注入漏洞。本文总结了 Python 中常见的高危函数、模块和第三方库,并给出对应的审计建议及其原理解析,供安全研究人员和开发者参考。

等风来 416
上一篇: 获取网站的实时股票数据
下一篇: 解决RichEdit line insertion error的方法
欧巴Godwin
欧巴Godwin 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 9690粉丝 141原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值