WinCE 下的组播通信
#include "winsock.h" //通信用的头文件,不能用 winsock2.h,WinCE 不支持。
#dene MAX_DATA 1000 //接收数据缓冲大小
char* m_mcastAddress="233.1.1.1";// 组播地址
char* m_Address="26.62.222.67";// 本机 IP 地址
UINT m_uPort=6800;// 绑定的本地端口号
SOCKET m_hSocket;// 通信套接字
WSADATA wsd;
SOCKADDR_IN m_Addr,m_sendAddr, m_recvAddr;
ip_mreq mreq;
//----------------------------- //接收数据线程
UINT SocketReceive(LPVOID param)
{
char recBuf[MAX_DATA]={0};
char ip[20]={0};
char *recIP=ip;
int recLen=0;
int len=sizeof(m_recvAddr);
while(1){
memset(recBuf,NULL,MAX_DATA);
if((recLen=recvfrom(m_hSocket,recBuf,MAX_DATA,0,
(struct sockaddr*)&m_recvAddr,&len))!=SOCKET_ERROR){//接收到数据
recIP=inet_ntoa(m_recvAddr.sin_addr);//对方 IP 地址
memcpy(Buf,recBuf,recLen); //将数据拷贝到 Buf
}
Sleep(5);
}
return 0;
}
//组播通信初始化
int CMainFrame::SocketInit(void)
{
int iRet =0;