当前位置: 技术问答>linux和unix
关于ip的获取
来源: 互联网 发布时间:2014-12-19
本文导语: 1 在linux下有什么函数可以获得本机所有ip? 2 什么函数可以把域名转换为ip? 3 如何知道本机连接到某个特定ip用的是哪一个ip? | 1 在linux下有什么函数可以获得本机所有ip? Reply: #include i...
1 在linux下有什么函数可以获得本机所有ip?
2 什么函数可以把域名转换为ip?
3 如何知道本机连接到某个特定ip用的是哪一个ip?
2 什么函数可以把域名转换为ip?
3 如何知道本机连接到某个特定ip用的是哪一个ip?
|
1 在linux下有什么函数可以获得本机所有ip?
Reply:
#include
int uname(struct utsname*name);
这个函数查询所在主机有关信息,放于utsname结构中,结构定义如下:
#define _UTS_NAMESIZE 16
#define _UTS_NODESIZE 256
struct utsname{
char sysname[_UTS_NAMESIZE];
char nodename[_UTS_NODESIZE];
char release[_UTS_NAMESIZE];
char version[_UTS_NAMESIZE];
char machine[_UTS_NAMESIZE];
};
2 什么函数可以把域名转换为ip?
Reply:
#include
struct hostent *gethostbyname(const char *name);
结构定义如下:
struct hostent{
char *h_name; //主机名称,以‘'结束
char **h_aliases; //主机其他名称,以‘'结束
int h_addrtype; //返回地址的类型,一般为AF_INET
int length; //地址长度
char **h_addr_list; //主机的一组网络节点地址(网络字节顺序)
};
3 如何知道本机连接到某个特定ip用的是哪一个ip?
Reply:
对于这个问题,tracerouter可以帮助你,请看man文档
Reply:
#include
int uname(struct utsname*name);
这个函数查询所在主机有关信息,放于utsname结构中,结构定义如下:
#define _UTS_NAMESIZE 16
#define _UTS_NODESIZE 256
struct utsname{
char sysname[_UTS_NAMESIZE];
char nodename[_UTS_NODESIZE];
char release[_UTS_NAMESIZE];
char version[_UTS_NAMESIZE];
char machine[_UTS_NAMESIZE];
};
2 什么函数可以把域名转换为ip?
Reply:
#include
struct hostent *gethostbyname(const char *name);
结构定义如下:
struct hostent{
char *h_name; //主机名称,以‘'结束
char **h_aliases; //主机其他名称,以‘'结束
int h_addrtype; //返回地址的类型,一般为AF_INET
int length; //地址长度
char **h_addr_list; //主机的一组网络节点地址(网络字节顺序)
};
3 如何知道本机连接到某个特定ip用的是哪一个ip?
Reply:
对于这个问题,tracerouter可以帮助你,请看man文档
|
2.gethostbyname
3.getpeername
1.谁说的,只要你知道设备名,你就可以得到ip该设备的ip地址
如: eth0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ETH_NAME "eth0"
int main()
{
int sock;
struct sockaddr_in sin;
struct ifreq ifr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock == -1)
{
perror("socket");
return -1;
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
if (ioctl(sock, SIOCGIFADDR, &ifr)
3.getpeername
1.谁说的,只要你知道设备名,你就可以得到ip该设备的ip地址
如: eth0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ETH_NAME "eth0"
int main()
{
int sock;
struct sockaddr_in sin;
struct ifreq ifr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock == -1)
{
perror("socket");
return -1;
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
if (ioctl(sock, SIOCGIFADDR, &ifr)
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
©2012-2021,