socket学习笔记——获取域名与IP(linux)

gethostbyname.c

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <arpa/inet.h>
 5 #include <arpa/inet.h>
 6 #include <netdb.h>
 7
 8 int main(int argc,char* argv[])
 9 {
10     int i;
11     struct hostent* host;
12     if(argc != 2)
13     {
14         printf("usage: %s <addr>\n",argv[0]);
15         exit(1);
16     }
17
18     host = gethostbyname(argv[1]);
19     if(!host)
20     {
21         printf("get host error......\n");
22         exit(1);
23     }
24     printf("official name:%s\n",host->h_name);
25     for(i = 0;host->h_aliases[i];i++)
26         printf("access %d; %s\n",i+1,host->h_aliases[i]);
27     printf("address type:%s \n",(host->h_addrtype==AF_INET)?"AF_INET":"AFINET6");
28     for(i = 0;host->h_addr_list[i];i++)
29         printf("IP addr %d: %s \n",i+1,inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
30     return 0;
31 }

gethostbyaddr.c

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <unistd.h>
 5 #include <arpa/inet.h>
 6 #include <netdb.h>
 7
 8 int main(int argc,char* argv[])
 9 {
10     int i;
11     struct hostent* host;
12     struct sockaddr_in addr;
13     if(argc != 2)
14     {
15         printf("usage :%s <ip>\n",argv[0]);
16         exit(1);
17     }
18
19     memset(&addr,0,sizeof(addr));
20     addr.sin_addr.s_addr = inet_addr(argv[1]);
21     host = gethostbyaddr((char*)&addr.sin_addr,4,AF_INET);
22     if(!host)
23     {
24         printf("get host error\n");
25         exit(1);
26     }
27
28     printf("official name;%s \n",host->h_name);
29     for(i = 0;host->h_aliases[i];i++)
30         printf("aliases %d:%s\n",i,host->h_aliases[i]);
31     printf("address type:%s\n",(host->h_addrtype==AF_INET)?"AF_INET":"AF_INET6");
32     for(i = 0;host->h_addr_list[i];i++)
33         printf("IP addr %d;%s\n",i+1,inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
34     return 0;
35 }
时间: 2024-08-29 01:41:09

socket学习笔记——获取域名与IP(linux)的相关文章

C++ Socket 学习笔记

Socket学习笔记 以下均为整理,做参考之用. IP Address IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异. IP地址被用来给Internet上的电脑一个编号.大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信.我们可以把"个人电脑"比作"

树莓派学习笔记——获取树莓派CPU温度

0 前言 本文通过文件操作读取树莓派CPU温度,在linux系统中任何设备的操作都被抽象成为文件读写,通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获得树莓派CPU的温度.本文通过以下几个部分说明如何读取和应用该温度参数--1.shell脚本操作:2linux文件IO操作,3.python文件操作: 4.通过python requset上传至yeelink平台. 网上也有相似的文章,大致的方法为通过python获得CPU温度数据,然后在写入某个文

JAVA Socket学习笔记20140618

2014-06-18  23.59 http://blog.csdn.net/kongxx/article/details/7288896 http://blog.csdn.net/wwww1988600/article/details/8923927 http://blog.csdn.net/xunianchong/article/details/16358077 http://blog.csdn.net/wwww1988600/article/details/8924081 http://w

php课外笔记--获取域名的方法

php课外笔记--获取域名的方法 PHP培训笔记中对获取域名有多种方法的介绍: 方法一(用 系统变量) 缺点不使用传递过来的地址和不支持系统变量的主机 echo $_SERVER['HTTP_HOST']; 方法二(用自带函数) $url = ‘http://www.51php.net/index.php?referer=51php.net’; $arr_url = parse_url($url); echo $arr_url['host']; 方法三( 自己写函数) function getd

Linux netfilter 学习笔记 之十二 ip层netfilter的NAT模块代码分析

本节主要是分析NAT模块相关的hook函数与target函数,主要是理清NAT模块实现的原理等. 1.NAT相关的hook函数分析 NAT模块主要是在NF_IP_PREROUTING.NF_IP_POSTROUTING.NF_IP_LOCAL_OUT.NF_IP_LOCAL_IN四个节点上进行NAT操作,在上一节中我们知道nat表中只有PREROUTING.POSTROUTING.LOCAL_OUT三条链,而没有NF_IP_LOCAL_IN链,所以不能创建在LOCAL_IN hook点的SNAT

C# Socket学习笔记一

小记:刚接触网络编程觉得网络是个神奇的东西,所以对它就很有兴趣,想了解下网络是如何进行进行数据传输的,那么开始第一天的学习吧!ReadyGo!!! 首先我们要了解一下几点内容: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().connect()函数 3.4.accept()函数 3.5.read().write()函数等 3.6.close()函数 4.socket中TCP的三次

python学习笔记-Day9 (TCP/IP协议、socket)

TCP/IP协议 TCP/IP四层协议 TCP/IP概念 tcp/ip协议是主机接入互联网以及接入互联网的两台主机通信的标准. 数据帧概念 数据帧 |-- 包头 | |--源地址 | |--目标地址 | |--数据类型 | |-- 数据 socket在四层协议中的位置 socket协议的交互流程 socket初试 # 依照上socket流程图,实现一个功能,客户端输入什么,就把输入的转为大写 # soceet server import socket ip_port=('127.0.0.1',9

linux学习笔记一:设置IP

使用ipconfig.setup或ip命令,也可直接修改/etc/sysconfig/network-scripts/ifcfg-eth0(对于centos7,网卡等设备的命名已不是eth0这种规则了).

Linux学习笔记——获取命令帮助方法及命令分类

命令类型: 内嵌命令:shell 内嵌 外部命令:在文件系统中存在某个路径与命令相同的可执行文件 环境变量:命名的内存空间 变量赋值 #printenv   显示环境变量 #hash     显示缓存命中命令 PATH:  使用:隔开的一组路径 0(1) 查找数据速度标准 获取命令帮助方法: 1.#help  COMMAND          获取内部命令帮助 ,例 help cd    查看cd命令帮助信息 2.# COMMAND --help        获取外部命令帮助,例  ls  -