typedef struct INFO  
{
BOOL m_bUsed;     
int m_IP;
unsigned short m_Port;
} char ip[50];
int port;
List.AddString(ip);
List.AddString(port);
怎样将这个结构的内容加入列表中?谢谢!

解决方案 »

  1.   

    你是不是像这样:
    sItem.Format("%s:%d", ip, port);
    List.AddString(sItem);
      

  2.   

    INFO info;
    ……
    const unsigned char* p = (const unsigned char*)&(info.m_IP);
    CString sItem;
    sItem.Format("%d.%d.%d.%d:%d", p[0], p[1], p[2], p[4], info.m_Port);
    List.AddString(sItem);
      

  3.   

    我这样:
    sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
            List.AddString(sItem);
    转过来的IP地址,是反的
      

  4.   

    sorry,
    p[0], p[1], p[2], p[4], 

    p[0], p[1], p[2], p[3], //最后这个。
      

  5.   

    是反的?那就:
    inet_ntoa(ntohl(sin.sin_addr))
      

  6.   

    哦,不行。
    sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
    sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
      

  7.   

    哦,不行。
    sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
    sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
      

  8.   

    error C2664: 'ntohl' : cannot convert parameter 1 from 'struct in_addr' to 'unsigned long'
      

  9.   

    sin.sin_addr.S_un.S_addr = ntohl(sin.sin_addr.S_un.S_addr);
    sItem.Format("%s:%d", inet_ntoa(sin.sin_addr), pINFO->m_Port);
    我用这个可以了,但好象太烦锁,有简单点了吗?一会就给分,先谢啦~~
      

  10.   

    本来不繁琐的,不知道你哪里出了问题,inet_ntoa(sin.sin_addr)本来完全可以的。
    关键是你那个sin是怎么得到的?为什么直接转是反的?为什么必须手工反过来再转才对?
      

  11.   

    是这样的: 
            CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    CString str;
    pEdit->GetWindowText(str);
    CString IP=str; int ip=ntohl(inet_addr(IP));        INFO* pINFO= new INFO;
    pINFO->m_IP=ip; ....       INFO*  pINFO = (INFO*) lpParam;
           sockaddr_in severAddr;
           severAddr.sin_family = AF_INET;
           severAddr.sin_port = htons(pINFO->m_Port);
           severAddr.sin_addr.S_un.S_addr = htonl(pINFO->m_IP);
           .....
           connect(sock, (sockaddr*)&severAddr, sizeof(severAddr));       再这里我想再取回pINFO->m_IP
            
           就这样不知哪有错吗?
      

  12.   

    我觉得
    int ip=ntohl(inet_addr(IP));
    直接
    int ip=inet_addr(IP);
    就可以了。severAddr.sin_addr.S_un.S_addr = htonl(pINFO->m_IP);
    这里不要改。没有试试,你试试看。