用C语言得到Linux主机的IP地址

#include <stdio.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <sys/ioctl.h>;
#include <netinet/in.h>;
#include <net/if.h>;
#include <net/if_arp.h>;
#include <arpa/inet.h>;
#include <errno.h>;  

#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) < 0)
        {
                perror("ioctl");
                return -1;
        }  

        memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
        fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr));  

        return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索struct
, include
, return
, sock
sin
linux主机的ip地址、c语言获取ip地址、c语言修改ip地址、c语言 ip地址转换、c语言ip地址,以便于您获取更多的相关知识。

时间: 2024-11-02 16:55:47

用C语言得到Linux主机的IP地址的相关文章

远程登录linux主机更换IP地址

 问题分析: 根据开发组同事反应,通过VCenter对RHEL6.0以下版本的系统进行克隆的时候,无法使用高级选项进行IP的指定操作,从而通过CloudStack对新的实例指定IP也是不能实现的,而且,不能够使用DHCP服务器解决该问题,否则会导致新虚拟机IP地址跟指定IP的不一致,也可能导致整个系统中IP地址分配的混乱. 解决思路: 给RHEL6.0以下系统制作的模板均指定一个固定的保留IP地址,比如192.168.3.0/24网段中,保留192.168.3.240~192.168.3.250

如何在Linux中找出所有在线主机的IP地址

你可以在 Linux 的生态系统中找到很多网络监控工具,它们可以为你生成出网络中所有设备的摘要,包括它们的 IP 地址等信息. 然而,实际上有时候你只需要一个简单的命令行工具,运行一个简单的命令就能提供同样的信息. 本篇教程会向你展示如何找出所有连接到给定网络的主机的 IP 地址.这里我们会使用 Nmap 工具来找出所有连接到相同网络的设备的IP地址. Nmap (Network Mapper 的简称)是一款开源.强大并且多功能的探查网络的命令行工具,用来执行安全扫描.网络审计.查找远程主机的开

在 Linux 中找出所有在线主机的 IP 地址

你可以在 Linux 的生态系统中找到很多网络监控工具,它们可以为你生成出网络中所有设备的摘要,包括它们的 IP 地址等信息. 然而,实际上有时候你只需要一个简单的命令行工具,运行一个简单的命令就能提供同样的信息. 本篇教程会向你展示如何找出所有连接到给定网络的主机的 IP 地址.这里我们会使用 Nmap 工具来找出所有连接到相同网络的设备的IP地址. Nmap (Network Mapper 的简称)是一款开源.强大并且多功能的探查网络的命令行工具,用来执行安全扫描.网络审计.查找远程主机的开

使用VMware VSphere WebService SDK进行开发 (五)——根据虚拟机的名称获取对应主机的IP地址

在整个获取监视信息的过程中,最难获取的就是根据虚拟机的名称获得对应主机的IP地址的功能.(个人觉得比较绕,绕了好久我才找到) 首先根据虚拟机的名称获得对应主机(HostSystem)的ManagedObjectReference对象. RetrieveResult props = getRetrieveResultObjectWithProperty("VirtualMachine", "summary.runtime.host"); ManagedObjectRe

Linux 禁止某个IP地址访问的几种方法

一.概述 这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问.这两个配置文件的格式如下: #服务进程名:主机列表:当规则匹配时可选的命令操作 server_name:hosts-list[:command] /etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP.如果两个文件的配置有冲突,以/etc/hosts.deny为准. /etc/hosts.allow和/etc/hosts.deny两个文件是控制

如何在Linux中发现IP地址冲突

你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们.它们通过DHCP服务器分配并且会经常改变.现在有两种IP地址.动态的一种会经常改变(几天一次),而静态的就如它的名字那样是静态的,意味着它们不会改变. 有时这会引发一些冲突.当一个动态IP被分配了并且有另外一台网络设备已经拥有了相同的IP.或者在相同网络子网上有多台分配IP的DHCP服务器.如果你有连通问题并且假设它是由于IP冲突造成的,那么你可以使用一个工具称作arp-scan来扫描它们. 这个工具会在本地网络发送ARP(Ad

linux配置网卡IP地址命令及常用网络配置命令

ifconfig eth0 192.168.1.102 netmask 255.255.255.0  //添加IP地址 route add default gw 192.168.1.1   //添加网关 启动生效: vim /etc/sysconfig/network-scripts/ifcfg-eth0    //(某些版本中可能没有vim这个编辑器比如centos,大家可能用vi替换) IPADDR=192.168.1.102  //添加IP地址 NETMASK=255.255.255.0

linux下修改ip地址,默认网关以及DNS

*修改IP地址 即时生效: ifconfig eth0 192.168.1.100  netmask 255.255.255.0 重启生效: vim  /etc/sysconfig/network-scripts/ifcfg-eth0       --增加或者修改下面几行          BOOTPROTO=static        IPADDR=192.168.1.100        NETMASK=255.255.255.0   *修改默认网关 即时生效 :route add defa

通过网络域名得到这台主机的IP地址

在Windows编程环境中,我们有一个可以调用的API 函数GetHostByName ,以前在Asp中我们必须通过组件来实现类似的功能,比如AspDNS等等,现在MS在ASP.Net上给我们提供了新的编程接口,让我们可以很轻松的实现这样类似的功能.原因是在Asp.Net中给我们提供了一个DNS Class,我们可以通过这个Class 轻松的实现我们在上面所提到的功能.我们可以看到下面的代码是很简单的程序,但是他实现的却是我们以前在Asp中想象都不可以想象的功能.<%@ Import NameS