YYgao 2015-10-30 02:36 采纳率: 0%
浏览 2431

UDP为什么只能接受指定端口的数据

WORD wVersionRequested = MAKEWORD(2, 2);

WSADATA wsaData;

if(0 != WSAStartup(wVersionRequested, &wsaData))

{

printf("WSAStartup failed with error: %d/n", GetLastError());

return EXIT_FAILURE;

}

if(2 != HIBYTE(wsaData.wVersion) || 2 != LOBYTE(wsaData.wVersion))

{

printf("Socket version not supported./n");

WSACleanup();

return EXIT_FAILURE;

}

g_UdpRecSock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

if(INVALID_SOCKET == g_UdpRecSock)

{

printf("socket failed with error: %d/n", WSAGetLastError());

WSACleanup();

return EXIT_FAILURE;

}

SOCKADDR_IN addr;

memset(&addr, 0, sizeof(addr));

addr.sin_family = AF_INET;

addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

addr.sin_port = htonl(INADDR_ANY);//tons(atoi("13400"));//htonl(INADDR_BROADCAST);

if(SOCKET_ERROR == bind(g_UdpRecSock, (LPSOCKADDR)&addr, sizeof(addr)))

{

int i = WSAGetLastError();
printf("bind failed with error: %d/n", WSAGetLastError());

if(INVALID_SOCKET != g_UdpRecSock)

{

closesocket(g_UdpRecSock);

g_UdpRecSock = INVALID_SOCKET;

}

WSACleanup();

return EXIT_FAILURE;

}

char szBuf[MAX_BUFFER] = {0};

SOCKADDR_IN remote;

memset(&remote, 0, sizeof(remote));

int len = sizeof(remote);
char strTemp[1024] = {0};

while(TRUE)  
{  
    if(SOCKET_ERROR == recvfrom(g_UdpRecSock, szBuf, MAX_BUFFER, 0, (LPSOCKADDR)&remote, &len))  
    {  
        int i = WSAGetLastError();
        strerrorid.Format("udp Recv error ID:%d",i);
        m_UdpRecThread->m_listbox.AddString(strerrorid);
        printf("recvfrom failed with error: %d/n", WSAGetLastError());  
    //  ExitThread(0);
        break;  
    } 

    AscToHex(strTemp,(unsigned char *)szBuf, sizeof(szBuf));
    m_UdpDebug.Format("Recv->%s",strTemp);
    m_UdpRecThread->m_listbox.AddString(m_UdpDebug);
}  

  • 写回答

3条回答 默认 最新

  • zuishikonghuan 2015-10-30 05:01
    关注

    这是UDP协议规定的

    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler