首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WinCE UDP通讯有关问题,数据报发不出去

2013-01-07 
WinCE UDP通讯问题,数据报发不出去。我把服务端代码下到嵌入式设备上,用PC的做客户端,没有问题。说明服务端

WinCE UDP通讯问题,数据报发不出去。
我把服务端代码下到嵌入式设备上,用PC的做客户端,没有问题。说明服务端接收和发送都没有问题,我把客户端的发送代码复制到服务端上,用PC测试也没问题,说明客户端发送代码没错。但是,客户端与PC连接后,PC始终收不到数据,我曾经判断发送状态也是“成功”。这是为什么呢?那位指点下谢谢!

服务端代码:
SOCKET m_UDPSocket;                   //UDP Socket通讯套接字
WSADATA wsa;

//加载winsock动态链接库
if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)
{
return -1;//代表失败
}

SOCKADDR_IN localAddr;
SOCKADDR_IN fromAddr;
localAddr.sin_family = AF_INET;
localAddr.sin_port = htons(5050);
localAddr.sin_addr.s_addr=INADDR_ANY;

int fromlen =sizeof(fromAddr);

//创建UDP套接字
m_UDPSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if (m_UDPSocket == INVALID_SOCKET)
{
return -1;
}


//绑定地址
if(bind(m_UDPSocket,(struct sockaddr*)&localAddr,sizeof(localAddr))!=0)
{
return -1;
}

while (1)
{
ZeroMemory(recvBuf,128);
if (recvfrom(m_UDPSocket,recvBuf,sizeof(recvBuf),0,(struct sockaddr*)&fromAddr,&fromlen)!=SOCKET_ERROR)
{
sendto(m_UDPSocket,(char*)&m_value,sizeof(m_value),0,(struct sockaddr*)&fromAddr,fromlen);
}
Sleep(100);
}

closesocket(m_UDPSocket);
WSACleanup();

客户端代码:
SOCKET m_ClientSocket;                   //UDP Socket通讯套接字
WSADATA wsa;
int iLen;
CString m_remoteHost,s;
char SendBuf[8];

SendBuf[0]= 0x68;
SendBuf[1]= 0x01;
SendBuf[2]= 0x00;
SendBuf[3]= 0x00;
SendBuf[4]= 0x19;
SendBuf[5]= (unsigned char)0x89;
SendBuf[6]= 0x11;
SendBuf[7]= 0x22;

SOCKADDR_IN localAddr;

//加载winsock动态链接库
if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)
{
return -1;//代表失败
}

m_remoteHost = _T("192.169.1.201");
   char ansiRemoteHost[255];
ZeroMemory(ansiRemoteHost,255);
WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,m_remoteHost,wcslen(m_remoteHost),ansiRemoteHost,wcslen(m_remoteHost),NULL,NULL);

localAddr.sin_family=AF_INET;
    localAddr.sin_port=htons(5050);
localAddr.sin_addr.s_addr=inet_addr(ansiRemoteHost);
//localAddr.sin_addr.s_addr=inet_addr("192.169.1.200");
    iLen=sizeof(localAddr);

m_ClientSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

if (m_ClientSocket==INVALID_SOCKET)
{
AfxMessageBox(L"......09");
return -2;
}

connect(m_ClientSocket,(sockaddr*)&localAddr,sizeof(localAddr));

while(1)
{
sendto(m_ClientSocket,SendBuf,sizeof(SendBuf),0,(struct sockaddr*)&localAddr,iLen);
Sleep(10);
recvfrom(m_ClientSocket,(char*)&m_value,sizeof(m_value),0,(struct sockaddr*)&localAddr,&iLen);
Sleep(1000);
}
closesocket(m_ClientSocket);
WSACleanup();
[解决办法]
这是个难题啊
[解决办法]
客户端用得着绑定端口么?

热点排行