我用CSocket作udp通讯,远端计算机向中心发送数据,如何得到远端计算机的ip地址
    CString m_localIP = "192.168.1.200";
int m_lp = 6802; CString m_remoteIP = "192.168.1.22";
int m_rp = 6800;m_sockSend 是从CSocket继承void CUDPTSTDlg::OnReceive()
{
char szRecv[1500];
UINT uPort;  //=6800;
    int iRecv = 0, nSend;
uPort = m_lp;
iRecv = m_sockSend.ReceiveFrom(szRecv,1500, m_localIP, uPort, 0);
         // 如何得到发送方的IP if( iRecv<0 )   return;
szRecv[iRecv]='\0';
m_nRevNum++;
//sprintf( szRecv, "--%d", m_nRevNum );
m_sRevStr.Format( "%s--%d", szRecv, m_nRevNum );
}void CUDPTSTDlg::OnCreat() 
{
// TODO: Add your control notification handler code here    UpdateData( TRUE );
    m_sockSend.SetParent( this );    m_sockSend.Create( m_lp, SOCK_DGRAM );
m_sockSend.Bind( m_lp, NULL );
GetDlgItem(IDCREAT)->EnableWindow( FALSE);
GetDlgItem(IDCLOSE)->EnableWindow( TRUE );
GetDlgItem(IDC_SEND )->EnableWindow(TRUE);
GetDlgItem(IDC_MSEND )->EnableWindow(TRUE); UpdateData(FALSE);}

解决方案 »

  1.   

    udp通讯?ReceiveFrom时已经得到远端的地址了。
      

  2.   

    ReceiveFrom第三个参数会返回远程form ip的
      

  3.   

    中心服务器同时可以接收不同的远程计算机上传的udp包,如何在用
    iRecv = m_sockSend.ReceiveFrom(szRecv,1500, m_localIP, uPort, 0);
      得到发送方的IP,我原来用当客户端发送内容给服务器时
    recvfrom(sRecvSocket, recvBuf, 64, 0, (struct sockaddr FAR *)&recvAddr, (int FAR *)&nRecvLength);
    其中recvAddr就是客户端的地址.
    可通过
    CString strIP = inet_ntoa(recvAddr.sinaddr);
    获得其IP地址
    但是现在用CSocket通讯,如何处理,MSDN中关于CSocket没有对应的函数
      

  4.   

    不好意思,确实在第三个参数中得到了对方的ip地址,我没有单步跟踪,具体调试一下就明白了,谢谢大家,好长时间没写VC的socket通讯了,好多事都忘了