問題:
hostent是gethostbyname()和gethostbyaddr()都會涉及到的乙個結構體。**如下:
struct hostent ;
gethostbyname()的原型是:
struct hostent *gethostbyname(const char *name);
函式的傳入值是網域名稱或者主機名,例如"www.google.com"、"191.168.1.253"等;
函式的返回值:
成功時,返回乙個指向hostent結構的指標;
失敗時,返回null。
程式設計除錯過程中需要檢視所取到的ip位址等資訊,所以將hostent的全部內容列印出來就對除錯很有幫助了。
解決辦法:
#include #include #include #include int main(int argc, char *argv)
/* get the host name */
hostname = argv[1];
// if ((host = (struct hostent*)gethostbyname(argv[1])) == null)
printf("host name is: %s\n", host->h_name);
/* printf all the aliases of host */
for(pptr = host->h_aliases; *pptr != null; pptr++)
printf("host addrtype is: %d\n", host->h_addrtype);
printf("host length is: %d\n", host->h_length);
// // printf("host is: %x\n", *((struct in_addr*)host->h_addr));
/* printf ip address according to addrtype */
switch(host->h_addrtype)
break;
default:
printf("unknown address type\n");
break;
} return 0;
}
程式的執行結果:
dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ ./pri-hostent
usage: ./pri-hostent hostname(of ip addr such as 192.168.1.101)
dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ ./pri-hostent www.google.com
host name is: www.l.google.com
alias of host: www.google.com
host addrtype is: 2
host length is: 4
address: 74.125.128.106
address: 74.125.128.147
address: 74.125.128.99
address: 74.125.128.103
address: 74.125.128.104
address: 74.125.128.105
hostent和in addr結構體
一.hostent資料結構是這樣的 struct hostent typedef uint32 t in addr t struct in addr 這裡是這個資料結構的詳細資料 struct hostent h name 位址的正式名稱。h aliases 空位元組 位址的預備名稱的指標。h ad...
ios 列印 結構體
我們經常會輸出一些座標尺寸資訊之類的,比如view的frame,是cgrect型別的,用frame.oringial.x 和frame.size.width來做nslog引數好麻煩,還好蘋果對這些常用的資料提供了字串轉換的方法,如下 1 2 3 4 5 6 nsstring nsstringfrom...
gdb列印結構體member offset
linux的crash有個好處就是可以方便列印結構體成員變數的offset,有時候對彙編的時候,需要偏移,可惜crash需要乙個活體才行,不能單純的vmlinux,因為它就是這麼設計的 gdb天生沒有這個功能,不過python可以實現 cat offset.py import gdb class o...