买球app

买球app新闻
WINCE上实现UDP通信(100%可行!)
发布时间:2021-06-03
  |  
阅读量:
本文摘要:首先讲解一下,研发平台:WINCE4.2(WINCE5.0也限于,因为用于了静态编译器MFC动态链接库);开发工具:VS2005。 接下来开始改动代码: viewplaincopytoclipboardprint?

欧洲杯买球app

首先讲解一下,研发平台: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函数为:  。..。

买球app

..。..。..。..  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.。


本文关键词:买球app,WINCE,上,实现,UDP,通信,100%,可行,首先,讲解

本文来源:买球app-www.zgjfgcw.com

咨询电话
0406-710137681
公司地址:江苏省南京市玄武区玄武湖
邮箱:admin@zgjfgcw.com
淘宝店铺:
Copyright © 2007-2021 www.zgjfgcw.com. 买球app科技 版权所有 ICP备94192593号-9