如何通过收到的udp包,获得对方的ip地址?
我知道c# vb都可以用ipendpoint实现,c++好像也行,但MFC怎么实现???

解决方案 »

  1.   

    ZeroMemory(buf,sizeof(buf));
    ZeroMemory(&sa,sizeof(sa));
    memset(strIp,0,sizeof(strIp));

    addrLen=sizeof(sa);
    len=recvfrom(m_hSock,buf,1024,0,(struct sockaddr *)&sa,(int FAR *)&addrLen);
    if(len<=0){
    len=WSAGetLastError();

    return;
    }
    //得到端口值
    nPort=sa.sin_port;
    nPort=ntohs(nPort);
    if(len<=0) return;
    //得到IP地址
    strncpy(strIp,inet_ntoa(sa.sin_addr),strlen(inet_ntoa(sa.sin_addr)));
    memset(&pData,0,sizeof(struct TagMsgRcv));
    memcpy(pData.msg,buf,len);
    pData.len=len;
    strcpy(pData.strIp,strIp);
      

  2.   

    就在recvfrom后的,(struct sockaddr *)&sa里,自己读出来转不顺序就行了