一行语句调试了一个礼拜了,晕死了,该如何解决

一行语句调试了一个礼拜了,晕死了
//处理客户端的连接信息
void   CChatSvrDlg::ProcessPendingAccept()  
{
//生成一个新的套节字与客户端通讯
CClientSocket*   pSocket   =   new   CClientSocket(this);

if   (m_pSocket-> Accept(*pSocket))
{
//将该套节字保存起来
m_connectionList.AddTail(pSocket);

                  sockaddr_in   *   addr=new   sockaddr_in();  
  memset(addr,0,sizeof(addr));
                                                      int   size=sizeof(addr);

pSocket-> GetPeerName((SOCKADDR   *)addr,&size);
CString   ss=inet_ntoa(addr-> sin_addr);
AfxMessageBox(ss);     //205.205.205.205  
}
else
delete   pSocket;
}


源码如上。使用CSocket,在服务器获取连接的客户端的ip地址,使用GetPeerName方法,获得的地址总是   205.205.205.205     ,根本就不是我的ip地址。可能有很多人会说我的pSocket不正确,其实是对的,pSocket可以正常通讯的!!

上网查了很多资料,可是没有答案,都说用GetPeerName,可是我为什么不能正确得到呢?

在线等!希望高手告知啊!!!

------解决方案--------------------
^_^
------解决方案--------------------
呵呵
------解决方案--------------------
205.205.205.205 == 0xCDCDCDCD
------解决方案--------------------
顶, 把心得说出来啊,大家分享^_^
------解决方案--------------------
gx lz。
205.205.205.205 = 0xCDCDCDCD
根本没得到值。
呵呵。
------解决方案--------------------
以下几句有问题:
sockaddr_in * addr=new sockaddr_in();
memset(addr,0,sizeof(addr));//这里有问题
int size=sizeof(addr);//这里有问题

pSocket-> GetPeerName((SOCKADDR *)addr,&size);//这里有问题
CString ss=inet_ntoa(addr-> sin_addr);

//如果你不用new运算符,而是局部变量,这个问题就可能不会出现。