添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
慷慨的蚂蚁  ·  SQL SERVER ...·  1 年前    · 
灰常酷的小笼包  ·  sql server convert ...·  1 年前    · 

#include <netdb.h>

#include <sys/socket.h>


struct hostent *gethostbyname(const char *name);

这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。


struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
};


hostent-> h_name

表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com。

hostent-> h_aliases

表示的是主机的别名.www.google.com就是google他自己的别名。有的时候,有的主机可能有好几个别名,这些,其实都是为了易于用户记忆而为自己的网站多取的名字。

hostent-> h_addrtype

表示的是主机ip地址的类型,到底是ipv4(AF_INET),还是pv6(AF_INET6)

hostent-> h_length

表示的是主机ip地址的长度

hostent-> h_addr_lisst

表示的是主机的ip地址,注意, 这个是以网络字节序存储的 。千万不要直接用printf带%s参数来打这个东西,会有问题的哇。所以到真正需要打印出这个IP的话,需要调用inet_ntop()。


const char * inet_ntop (int af, const void *src, char *dst, socklen_t cnt) :

这个函数,是 将类型为af的网络地址结构src,转换成主机序的字符串形式 ,存放在长度为cnt的字符串中。返回指向dst的一个指针。如果函数调用错误,返回值是NULL。



#include <netdb.h>
#include <sys/socket.h>
#include <stdio.h>

int main(int argc, char **argv)
{
char *ptr, **pptr;
struct hostent *hptr;
char str[32];
ptr = argv[1];

if((hptr = gethostbyname(ptr)) == NULL)
{
printf(" gethostbyname error for host:%s\n", ptr);
return 0;
}

printf("official hostname:%s\n",hptr->h_name);
for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)
printf(" alias:%s\n",*pptr);

switch(hptr->h_addrtype)
{
case AF_INET:
case AF_INET6:
pptr=hptr->h_addr_list;
for(; *pptr!=NULL; pptr++)
printf(" address:%s\n",
inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
printf(" first address: %s\n",
inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
break;
default:
printf("unknown address type\n");
break;
}

return 0;
}




编译运行

-----------------------------

# gcc test.c

# ./a.out www.baidu.com

official hostname:www.a.shifen.com

alias:www.baidu.com

address:121.14.88.11

address:121.14.89.11

first address: 121.14.88.11





redis 哨兵密码 redis哨兵模式密码

哨兵模式搭建成功!(带密码)首先仍然是需要docker-compose(用于启动监控哨兵情况)安装(一下网址不需要经过github):准备搭建情况:#主机 84:6379 85:6379 86:6379 84:26379 85:26379 86:2637984机器环境搭建1.redis搭建vim /opt/redis/myredis/redis.conf其中bind注释掉或者0

Android byte数组长度不确定 android变长数组int

主要学习资料:黑马程序员的NDK方法使用(生产类库so)     //0.传入一维整型数组,无返回值(但已对数组进行了修改) public native void arrayEncode(int[] arr); //1.传入一维整型数组,数组长度(因为c不容易获取而Java方便),返回整型 private native int SumArray(int [] ar, int length);//