国产成人精品a视频一区www_国产区视频在线观看_99色视频_欲色av_亚洲一区电影_亚洲综合视频一区

WINCE上實(shí)現(xiàn)UDP通信(100%可行!)

來(lái)源:網(wǎng)絡(luò)

點(diǎn)擊:2208

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: WINCE,UDP通信

      首先介紹一下,開發(fā)平臺(tái):WINCE 4.2 (WINCE 5.0也適用,因?yàn)槭褂昧遂o態(tài)編譯MFC動(dòng)態(tài)鏈接庫(kù));開發(fā)工具:VS2005。

      接下來(lái)開始修改代碼:

      view plaincopy to clipboardprint?

      1.修改UDP_CE.CPP的SendData函數(shù)為:

      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;

      }

      當(dāng)然,不要忘記修改UDP_CE.h的SendData函數(shù)聲明為:bool SendData(const char *buf, int len);

      2.修改UDP_CE.CPP的RecvThread函數(shù)為:

      。..。..。..。..。..

      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

      {

      //此處添加解析程序,將接收到的數(shù)據(jù)解析后,

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

      delete []recvBuf;

      recvBuf = NULL;

      delete []recvedBuf;

      recvedBuf = NULL;

      }

      }

      3.修改UDPDlg.cpp.CPP的OnUdpCERecv函數(shù)為:

      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,不是必須,但可以節(jié)省多余的代碼

      typedef struct CUDPData

      {

      char FrameHead[4]; //幀頭

      DWORD DataPackageLen; //幀長(zhǎng)度

      char * Buf; //緩沖區(qū)數(shù)據(jù)

      char FrameTail[4]; //幀尾

      }UDPData;

      1.修改UDP_CE.CPP的SendData函數(shù)為:

      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;

      }

      當(dāng)然,不要忘記修改UDP_CE.h的SendData函數(shù)聲明為:bool SendData(const char *buf, int len);

      2.修改UDP_CE.CPP的RecvThread函數(shù)為:

      。..。..。..。..。..

      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

      {

      //此處添加解析程序,將接收到的數(shù)據(jù)解析后,

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

      delete []recvBuf;

      recvBuf = NULL;

      delete []recvedBuf;

      recvedBuf = NULL;

      }

      }

      3.修改UDPDlg.cpp.CPP的OnUdpCERecv函數(shù)為:

      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,不是必須,但可以節(jié)省多余的代碼

      typedef struct CUDPData

      {

      char FrameHead[4]; //幀頭

      DWORD DataPackageLen; //幀長(zhǎng)度

      char * Buf; //緩沖區(qū)數(shù)據(jù)

      char FrameTail[4]; //幀尾

      }UDPData;還可以刪除窗體上發(fā)送、接收數(shù)字的編輯框等,因?yàn)閷?shí)際應(yīng)用中用不上。

    (審核編輯: 智匯小新)

    聲明:除特別說(shuō)明之外,新聞內(nèi)容及圖片均來(lái)自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 成人精品一区二区三区中文字幕 | 亚洲电影在线观看 | 欧美国产一区二区 | 国产精品毛片久久久久久久 | www.久久久久久久久久久久 | 日本一区二区三区免费观看 | 一本色道久久88综合亚洲精品ⅰ | 超碰一区 | 国产精品理论在线观看 | 99久久免费精品国产男女性高好 | 黄色影视免费观看 | 久久成人精品视频 | 国产精品久久久久久久久久 | 午夜视频网站 | 国产一区二区影院 | 天天干夜夜爽 | 91中文字幕 | 欧美精品黄色 | 久久久久久久久久久久久久久久久久久久 | 欧洲一区二区在线观看 | 国产剧情一区二区 | 麻豆色呦呦 | 亚洲欧美中文日韩v在线观看 | 亚洲欧美国产一区二区 | 午夜影院在线看 | 精品无码久久久久国产 | www.久久精品| 久久人人爽人人爽 | 欧美xxxx色视频在线观看免费 | 午夜看片 | 国产无套精品久久久久久 | 久久久国产精品 | 牛牛影视成人午夜影视 | 亚洲午夜视频在线观看 | 国产一级片播放 | 91欧美 | 免费国产羞羞网站视频 | 亚洲国产高清高潮精品美女 | 美国黄色毛片 | 黄网站涩免费蜜桃网站 | 亚洲黄色大片网站 |