注意是UDP非连接只能在OnReceive后获得IP和端口我好用SENDTO与客户端打交道我在网上查了
char   network[20];
sockaddr_in   remote_addr;   
int   bufsize   =   sizeof(remote_addr);   
::getpeername(m_hSocket,   (PSOCKADDR)&remote_addr,   &bufsize);   
    
wsprintf(network,   "%d.%d.%d.%d",   
(BYTE)remote_addr.sin_addr.S_un.S_un_b.s_b1,   
(BYTE)remote_addr.sin_addr.S_un.S_un_b.s_b2,   
(BYTE)remote_addr.sin_addr.S_un.S_un_b.s_b3,   
  (BYTE)remote_addr.sin_addr.S_un.S_un_b.s_b4); 
// 
AfxMessageBox(network);得到的是204.204.204.204郁闷!
请教,谢谢!

解决方案 »

  1.   

    if(SOCKET_ERROR == WSARecvFrom(m_udpsocket,&wsabuf,1,&dwRead,&dwFlag,
    (SOCKADDR*)&addrFrom,&len,NULL,NULL))
    {
    MessageBox("接收数据失败!");
    return NULL;
    }

    CString ip_addr=inet_ntoa(addrFrom.sin_addr);//得到传来信息的ip地址
      

  2.   

    204,就是0xCC啊,这是VC当中为调试方便对内存置的一个初值,也就是说你没有获取到正确的值。getpeername 的返回值是什么,如果返回0那句正确,如果不正确就调用GetLastError/WSAGetLastError取具体意义的错误信息看看。
      

  3.   

    很对  0xCC是初始值   int 3 的机器码  防止你执行