inet_ntoa函数是将IP地址转化为字符串的函数,但是转化后返回的是一个远指针,想要把里面的内容COPY出来,该怎么办?用MEMCPY函数嘛?但是COPY的长度怎么掌握?

解决方案 »

  1.   

    直接memcpy
    或者strncpy
    反正ipv4的最大长度为16(加上结束符)
      

  2.   

    1楼,如果不到16位长,用MEMCPY过来以后,多余的字符怎么处理,因为网络数据包是随机抓的,这个长度不可能掌握的。。有没有更好的办法?
      

  3.   

    最多拷16位嘛
    如:
    char client_ip[16];
    memset(client_ip, 0, sizeof(client_ip));
    memcpy(client_ip, inet_ntoa(...), 16);
      

  4.   

    如果一个函数返回字符串,肯定以经\0结束的,否则就不叫字符串了(我是指LPCTSTR或者LPTSTR等类型),你想想,如果不按0结束,返回的字符串,别人怎么使用,除非它在返回一个字符串长度。所以,你的问题,直接strcpy就行了,或者直接赋给一个CString即可。
      

  5.   

    4楼,直接赋给一个CString就行,是不是这样写?CString sip,dip;
    sip = *inet_ntoa(sou_ip);
    dip = *inet_ntoa(des_ip);
      

  6.   

    CString   sip,dip; 
    sip   =   inet_ntoa(sou_ip); 
    dip   =   inet_ntoa(des_ip);