本文来自:http://blog.csdn.net/hellogv/
首先介绍一下,开发平台:WINCE 4.2(WINCE 5.0也适用,因为使用了静态编译MFC动态链接库);开发工具:VS2005。
以下的代码,来自中国水利水电出版社(www.waterpub.com.cn)的《EVC高级编程及其应用开发》这本书,若想实现WINCE的UDP通信,请先到水利水电出版社下载原本的UDP编程代码。当然,你懒得修改的话,可以直接到http://download.csdn.net/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;
还可以删除窗体上发送、接收数字的编辑框等,因为实际应用中用不上。
分享到:
相关推荐
WINCE平台上实现UDP通信涉及到操作系统内核级别的网络编程,尤其是在移动设备上的嵌入式开发环境中。在本文中,我们将会了解到在WINCE4.2以及WINCE5.0版本上通过Visual Studio 2005开发环境来开发UDP通信应用程序的...
在Windows CE(简称WINCE)平台上进行UDP通信是嵌入式系统开发中的一个重要环节,尤其在需要高效、低延迟的数据传输场景中。本实例代码针对VS2005开发环境,详细展示了如何在WINCE 4.2操作系统上实现UDP(用户数据报...
WinCE环境下UDP通信机制的研究与实现主要探讨了在Windows CE操作系统中如何利用UDP(User Datagram Protocol)进行网络通信。UDP是一种无连接的传输层协议,它不建立连接也不维护连接状态,而是直接将数据发送到目标...
在Windows CE(WinCE)操作系统上实现UDP通信程序是一个对嵌入式系统开发者至关重要的技能。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它提供了轻量级的数据通信服务,适用于实时数据传输...
标题"WinCE UDP通信程序"指的是在Windows CE操作系统上设计和实现的基于UDP协议的通信软件。这个程序已经通过了在仿真平台以及S3C6410和S3C2440这两种常见的ARM架构硬件平台上的测试,表明它具备良好的跨平台兼容性...
这个程序实现了在嵌入式系统WinCE中的UDP通信通能。代码中包含了UDP通信的基本编程发放,实现消息的发送和接收。程序采用回调函数接收对方发来的UDP数据,并通过字符串的形式显示在接收窗口的便捷框中。UDP通信被...
UDP通信实验.WINCE5.0 UDP通信实验.WINCE5.0 UDP通信实验.WINCE5.0
在本文中,我们将深入探讨如何使用Visual Studio 2005(VS2005)进行编程,特别是在Windows Embedded Compact(以前称为Windows CE)环境下实现UDP(User Datagram Protocol)通信。UDP是网络协议的一种,它提供了无...
该视频可以让初学者能很快上手,掌握wince下UDP通信的客户端和服务器端程序编写,熟悉其通信过程
"UdpCom"很可能是一个实现这一功能的项目或库,用于帮助开发者在WinCE设备上实现UDP通信,并与PC进行数据交换。下面将详细解释WinCE下UDP通信的基本概念、原理以及可能涉及到的技术点。 **UDP(User Datagram ...
在Windows CE平台上实现UDP通信是一项关键的技术任务,尤其对于嵌入式和移动设备开发者而言。Windows CE是一个轻量级的32位操作系统,专为资源有限的无磁盘设备设计,如掌上电脑。它的核心特性包括开放性、可升级性...
本文将深入探讨如何在这样的平台上实现UDP(用户数据报协议)通信,这在物联网、远程监控、数据传输等领域具有重要应用价值。 首先,我们需要了解UDP的基础知识。UDP是传输层协议之一,属于无连接协议,它不建立...
UDP(User Datagram Protocol)通信实验在Windows CE(wince)平台上使用Embedded Visual C++(EVC)进行开发是一项常见的技术实践。这个实验主要是为了理解和掌握UDP协议的基本原理和使用方法,以及如何在嵌入式...
WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。...
在实现过程中,需要关注以下几个关键步骤: 1. 初始化Winsock:使用`WSAStartup()`函数启动Winsock服务,确保系统可以进行网络通信。 2. 创建套接字:使用`socket()`函数创建一个UDP套接字,指定协议类型为AF_INET...
在Windows CE 6.0(简称WinCE)操作系统下,UDP(User Datagram Protocol)数据传输是一种常见的通信方式,尤其适用于需要快速、简单通信且对数据完整性要求不高的场景。本文将详细探讨如何在PB6.0(PowerBuilder ...
在Pocket PC 2003(ARMV4)平台上,开发者需要对这些协议进行封装,以便在嵌入式设备上实现网络通信功能。本Demo提供了一个实用的起点,展示了如何在Wince系统中操作TCP和UDP。 首先,TCP协议确保数据的可靠传输,...
下面将详细讨论在winCE6.0中进行UDP测试的相关知识点。 1. **UDP协议特点**: - 无连接:UDP不建立连接,而是直接发送数据报文。 - 不可靠:不保证数据报文的顺序接收,也不处理丢失或重复的数据。 - 面向报文:...
总的来说,这个C#版的Windows CE UDP客户端案例提供了一个基础的UDP通信框架,可以帮助开发者了解如何在.NET Compact Framework环境下实现简单的UDP发送和接收。然而,实际应用中可能还需要处理更多的细节,例如错误...
在Windows CE(简称WinCE)平台上实现TCP通信是一项常见的任务,尤其在开发嵌入式系统时。本项目基于Visual Studio 2005(VS2005)环境,提供了样例TCP通信程序,帮助开发者理解和掌握如何在WinCE设备上进行网络通信...