WINCE 에서 UDP 통신 실현 (100% 가능!)
먼저, 개발 플랫폼: WINCE 4.2 (WINCE 5.0 도 적 용 됩 니 다. 정적 컴 파일 MFC 동적 링크 라 이브 러 리 를 사 용 했 기 때 문 입 니 다).개발 도구: VS 2005.
다음 코드 는 중국 수리 수전 출판사 www.waterpub.com.cn 의 'EVC 고급 프로 그래 밍 및 응용 개발' 이라는 책 에서 나 왔 습 니 다. WINCE 의 UDP 통신 을 실현 하려 면 먼저 수리 수전 출판사 에 가서 원래 의 UDP 프로 그래 밍 코드 를 다운로드 하 십시오.물론 수정 하기 싫 으 면 내 가 이미 만 든 인 스 턴 스 코드 를 직접 다운로드 할 수 있다.
다음 코드 수정 시작:
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;
실제 응용 프로그램 에서 사용 할 수 없 기 때문에 창 에 숫자 를 보 내 고 받 는 편집 상자 등 도 삭제 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.