资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

如何反过来将 sockaddr_in 中的IP地址、端口号转化成 字符串??

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

如题

网友回答:

发表者:wenxy1

 
   
  CString   strTemp;  
  strTemp.Format(...);

发表者:laomai

用inet_ntoa函数,例子如下  
  #include   "winsock.h"  
  #include   "stdio.h"  
  int   main(int   argc,char*   argv[])  
  {  
          in_addr   a;  
          a.S_un.S_addr   =   inet_addr("192.168.0.74");  
          char*p   =   inet_ntoa(a);  
          printf("ip   addr   is   %s\n",p);  
   
          return   0;  
  }

发表者:swordning

char   addr[20];  
   
  addr=inet_ntoa(a.S_un.S_addr);

发表者:alexmayer

假设使用struct   sockaddr_in   ina,想将IP地址“164.112.175.124”储存到其中,那么所要做的是调用函数inet_addr(),转换上面“数字   +   句点”格式的IP地址到unsigned   long中。这个工作可以这样来做:      
   
    ina.sin_addr.s_addr=inet_addr(”164.112.175.124”);    
       
    inet_addr()返回的地址已经是按照网络字节顺序的,不用调用htonl()。在发生错误的时候inet_addr()返回-1。调用后,需使用正确的错误检查,比如说当IP地址为255.255.255.255的时候,返回的就是(unsigned)-1。因为这是个广播地址,你的程序必需能够将这类错误捕获出来。      
   
    你现在就可以转换字符串形式的IP地址为1ong了。若有一个数据结构struct   in_addr,按照“数字+句点”格式打印时,你要用函数inet_ntoa()(ntoa意思是network   to   ascⅡ),如下所示:      
   
    printf(“%s”,inet_ntoa(ina.sin_addr));    
       
    这样就可以打印IP地址。注意:函数inet—ntoa()的参数是struct   in_addr,而不是long,它返回的是一个指向字符的指针。      
   
    在inet_ntoa内储存了字符数组,因此它每次调用inet_ntoa()的时候将覆盖以前的内容。      
   
    例如:      
   
    Char   a1,*a2;    
    ......    
    a1=inet_ntoa(ina1.sin_addr);   /*假设地址是;164.112.175.124*/    
    a2=inet_ntoa(ina2.sin_addr);/*假设地址是:202.112.58.200*/    
    printf(“address   1:%sn”,a1);    
    printf(“address   2:%sn”,a2);    
       
    上面运行结果是:      
   
    address   l:202.112.58.200    
    address   2:202.112.58.200    
   
    如果想保存地址,那么可用strcpy()保存到自己的字符数组中。      
 


 

 
热门推荐笔记本: 新华海笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved