// setip.h
#ifndef _INCLUDE_SETIP_H_
#define _INCLUDE_SETIP_H_ // 设置IP地址 int setip(char *ip); // 获取IP地址 char* getip(char *ip_buf); #endif // end setip.h






//setip.c

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<sys/ioctl.h>

#include<sys/socket.h>

#include<arpa/inet.h>

#include<netinet/in.h>

#include<net/if.h>

#include "setip.h"

 

//设置IP地址


 

int setip(char* ip)

{

    struct ifreq temp;

    struct sockaddr_in *addr;

    int fd = 0;

    int ret = -1;

    strcpy(temp.ifr_name, "eth0");

    if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)

    {

        return -1;

    }

    addr = (struct sockaddr_in *)&(temp.ifr_addr);

    addr->sin_family = AF_INET;

    addr->sin_addr.s_addr = inet_addr(ip);

    ret = ioctl(fd, SIOCSIFADDR, &temp);

    close(fd);

    if(ret < 0)

        return -1;

    return 0;

}

 

// 获取IP地址


char* getip(char* ip_buf)

{

    struct ifreq temp;

    struct sockaddr_in *myaddr;

    int fd = 0;

    int ret = -1;

    strcpy(temp.ifr_name, "eth0");

    if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)

    {

        return NULL;

    }

    ret = ioctl(fd, SIOCGIFADDR, &temp);

    close(fd);

    if(ret < 0)

        return NULL;

    myaddr = (struct sockaddr_in *)&(temp.ifr_addr);

    strcpy(ip_buf, inet_ntoa(myaddr->sin_addr));

    return ip_buf;

}

 

 



int main(int argc, char * argv[])

{

    char * ip = "172.20.223.117";

    char buf[16]="";

    setip(argv[1]);

    printf("ipaddr=%s/n",getip(buf));

    return 0;

}



// end setip.c

【转载】linux C …的更多相关文章

  1. [转载]Linux进程调度原理

    [转载]Linux进程调度原理 Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交 ...

  2. [转载]Linux下非root用户如何安装软件

    [转载]Linux下非root用户如何安装软件 来源:https://tlanyan.me/work-with-linux-without-root-permission/ 这是本人遇到的实际问题,之 ...

  3. [转载]Linux 命令详解:./configure、make、make install 命令

    [转载]Linux 命令详解:./configure.make.make install 命令 来源:https://www.cnblogs.com/tinywan/p/7230039.html 这些 ...

  4. [转载]Linux缓存机制

    [转载]Linux缓存机制 来源:https://blog.csdn.net/weixin_38278334/article/details/96478405 linux下的缓存机制及清理buffer ...

  5. [转载] Linux启动过程详解-《别怕Linux编程》之八

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket.为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. = ...

  6. [转载]Linux命令笔记

    *以下内容均来自于网络转载,感谢原作者分享 <对Linux新手非常有用的20个命令> 传送门 英文原文为“Switching From Windows to Nix or a Newbie ...

  7. 转载 linux内核 asmlinkage宏

    转载http://blog.chinaunix.net/uid-7390305-id-2057287.html 看一下/usr/include/asm/linkage.h里面的定义:#define a ...

  8. [转载] Linux下高并发socket最大连接数所受的各种限制

    原文: http://mp.weixin.qq.com/s?__biz=MzAwNjMxNjQzNA==&mid=207772333&idx=1&sn=cfc8aadb422f ...

  9. [转载]linux下svn常用指令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  10. [转载]Linux LVM硬盘管理及LVM扩容

    最近项目中一直在用Linux,其中涉及到了Linux的LVM,本来想自己写一篇关于LVM的文章,搜了一下,发现了一篇更好的,转载过来,也感谢作者gaojun 原文Linux LVM硬盘管理及LVM扩容 ...

随机推荐

  1. .Net WebApi基本操作

    一.服务端 1.新建webapi项目 2.配置WebApiConfig public const string DEFAULT_ROUTE_NAME = "DB";// DB指数据 ...

  2. 【CC2530入门教程-03】CC2530的中断系统及外部中断应用

    第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及 ...

  3. [leetcode-496-Next Greater Element I]

    You are given two arrays (without duplicates) nums1 and nums2 where nums1's elements are subset of n ...

  4. 禁用自动映射的 Exchange 邮箱

    客户最近询问他们无法从用户的Outlook配置文件中删除邮箱.在这种情况下,它们是共享邮箱,并出现在Outlook的左窗格中.但原因和解决方法同样适用于用户邮箱.并且 无论用户邮箱在本地 Exchan ...

  5. 3.MQTT paho

    一.概述 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.例如,但不仅限于此: 网络代价昂贵,带宽低.不可靠. 在 ...

  6. springmvc常用注解标签详解【转】

    转载自:http://www.cnblogs.com/leskang/p/5445698.html 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由Disp ...

  7. 底层码农的Stanford梦 --- 从SCPD开始 [转]

    转载自知乎: https://zhuanlan.zhihu.com/p/25010074 一开始让我写这篇文章的时候,我是拒绝的.毕竟,我不是Stanford毕业的,出来写文章介绍Stanford,难 ...

  8. 2017寒假零基础学习Python系列之函数之 递归函数

    什么是递归函数? 在函数内部,也可以继续调用其他函数,如果一个函数在内部调用本身,这个函数为递归函数举一个求n的阶乘的例子: def fact(n): if n == 1: return 1; els ...

  9. Python3中文件处理

    1.txt,xls,doc等文件的使用 f=open("filename","w")   打开一个用于写入的文件,要写入内容时使用f.write("内 ...

  10. FileEditor

    package JBJADV003; import java.io.*; class FileEditor { public static void main(String args[]) throw ...