linux C Get/Set IP Address

来源:互联网 发布:java仪表盘代码 编辑:程序博客网 时间:2024/05/29 18:53
//------------------------h file------------------- //setip.h#ifndef _INCLUDE_SETIP_H_#define _INCLUDE_SETIP_H_  //设置IP地址/* * 函数名称 : int setip(char *ip) * 函数功能 : 设置系统IP地址 * 参    数 :  *            char *ip :设置的IP地址,以点分十进制的字符串方式表示,如“192.168.0.5”  * 返 回 值 : 0 : 成功 ;  -1 :  失败  */ int setip(char*ip); //获取IP地址/* * 函数名称 : char * getip(char *ip_buf) * 函数功能 : 获取系統IP地址 * 参    数 :  *            char *ip_buf :用来存放IP地址的内存空间 * 返 回 值 : ip_buf : 存放IP地址的内存地址 */char* getip(char*ip_buf); #endif//_INCLUDE_SETIP_H_//end setip.h//------------------------c file-----------------------//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) * 函数功能 : 设置系统IP地址 * 参    数 :  *            char *ip :设置的IP地址,以点分十进制的字符串方式表示,如“192.168.0.5”  * 返 回 值 : 0 : 成功 ;  -1 :  失败  */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) * 函数功能 : 获取系統IP地址 * 参    数 :  *            char *ip_buf :用来存放IP地址的内存空间 * 返 回 值 : ip_buf : 存放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 -1;    }    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(ip);    printf("ipaddr=%s/n",getip(buf));    return 0;}*///end setip.c


from http://blog.csdn.net/jueqing007/article/details/5991859

0 0
原创粉丝点击