开云体育登录入口
Mou Mou Jidian Generator
发电机维修 发电机回收
发电机出售 发电机租赁
客户统一服务热线

025-35717294
19814961943

4发电机出租
您的位置: 主页 > 产品中心 > 发电机出租 >
开云体育登录入口:WINCE上实现UDP通信(100%可行!)

开云体育登录入口:WINCE上实现UDP通信(100%可行!)

本文摘要:首先讲解一下,研发平台:WINCE4.2(WINCE5.0也限于,因为用于了静态编译器MFC动态链接库);开发工具:VS2005。 接下来开始改动代码: viewplaincopytoclipboardprint?

开云体育登录入口

首先讲解一下,研发平台:WINCE4.2(WINCE5.0也限于,因为用于了静态编译器MFC动态链接库);开发工具:VS2005。  接下来开始改动代码:  viewplaincopytoclipboardprint?  1.改动UDP_CE.CPP的SendData函数为:  boolCUDP_CE::SendData(constchar*buf,intlen)  {  intnBytes=0;  intnErrorCode;  nBytes=sendto(m_UDPSocket,buf,len,0,(sockaddr*)m_RemoteAddr,sizeof(m_RemoteAddr));  if(nBytes==SOCKET_ERROR)  {  nErrorCode=WSAGetLastError();  m_OnUdpError(m_pOwnerWnd,nErrorCode);  returnfalse;  }  returntrue;  }  当然,不要记得改动UDP_CE.h的SendData函数声明为:boolSendData(constchar*buf,intlen);  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=newchar[1024];  recvedBuf=newchar[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;  }  elseif(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);  CStringstrRecv(buf);  pRecvStrEdit-》SetWindowText(strRecv);  4.移除UDP_CE.H,不是必需,但可以节省多余的代码  typedefstructCUDPData  {  charFrameHead[4];//帧头  DWORDDataPackageLen;//帧长度  char*Buf;//缓冲区数据  charFrameTail[4];//帧尾  }UDPData;  1.改动UDP_CE.CPP的SendData函数为:  boolCUDP_CE::SendData(constchar*buf,intlen)  {  intnBytes=0;  intnErrorCode;  nBytes=sendto(m_UDPSocket,buf,len,0,(sockaddr*)m_RemoteAddr,sizeof(m_RemoteAddr));  if(nBytes==SOCKET_ERROR)  {  nErrorCode=WSAGetLastError();  m_OnUdpError(m_pOwnerWnd,nErrorCode);  returnfalse;  }  returntrue;  }  当然,不要记得改动UDP_CE.h的SendData函数声明为:boolSendData(constchar*buf,intlen);  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=newchar[1024];  recvedBuf=newchar[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;  }  elseif(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);  CStringstrRecv(buf);  pRecvStrEdit-》SetWindowText(strRecv);  4.移除UDP_CE.H,不是必需,但可以节省多余的代码  typedefstructCUDPData  {  charFrameHead[4];//帧头  DWORDDataPackageLen;//帧长度  char*Buf;//缓冲区数据  charFrameTail[4];//帧尾  }UDPData;还可以移除窗体上发送到、接管数字的编辑框等,因为实际应用于中用不上。  本文来自CSDN博客,刊登请求标明原文:http://blog.csdn.net/hellogv/archive/2007/11/10/1878355.。


本文关键词:开云,开云体育登录入口,体育,登录,入口,WINCE,上,实现,UDP,通信

本文来源:开云体育登录入口-www.tiaoma88.com

Copyright © 2006-2022 www.tiaoma88.com. 开云体育登录入口科技 版权所有  ICP备案:ICP备61061276号-6