linux c 判断字符串是否为ip地址

linux c 判断字符串是否为ip地址,第1张

一般地可以通过正则表达式库进行检测

也可以手动进行检测

常见的ip地址是点分十进制的字符串形式

类似

192.168.1.1

10.2.4.1

这种

四个部分每个部分的最大值是255

所以正则表达式简单点可以是

(\d+\.){3}\d+

但这样并不能完全正确地匹配ip地址

如果所要匹配的文件中确定出现的类似字符串为ip地址的话就完全没有问题

准确点可以

(\d{1,3}\.){3}\d{1,3}

然后再对每个数字进行判断

判断是否超出了ip地址的范围

下面是一个简单的使用正则表达式的代码

#include <stdio.h>

#include <string.h>

#include <pcre.h>

int main(int argc,char **argv)

{

    char *s="192.168.1.1"

    pcre *code

    int rc

    int ovector[2*3]

    const char *errptr

    const char *ip

    int erroffet

    char *p

    char buf[20]

    code=pcre_compile("(\\d{1,3}\\.){3}\\d{1,3}",0,

            &errptr,&erroffet,NULL)

    if((rc=pcre_exec(code,NULL,s,strlen(s),0,0,ovector,2*3)) > 0)

    {

        pcre_get_substring(s,ovector,rc,0,&ip)

        snprintf(buf,20,"%s",ip)

        pcre_free_substring(ip)

        for(p=strtok(buf,".")p != NULLp=strtok(NULL,"."))

        {

            if(atoi(p) > 255)

                goto end

        }

        printf("正确ip!\n")

        return 0

    }

end:

        printf("错误的ip!\n")

    pcre_free(code)

    return 0

}

网络配置参数

主机名:用于在网络上标识一台计算机

IP地址与子网掩码:

IP地址一定是设置在主机网卡上的,网卡的IP地址等同于主机的IP地址

IP地址才哟个点分十进制的表示法:x.x.x.xx的取值范围是0~255。传统上IP地址分为A、B、C、D、E五类,其中A、B、C三类常用

子网掩码用来指明一个IP地址所标示的主机是处于哪个子网中的。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分

子网掩码是一个32位地址,对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0

IP地址的类别判定:

从一个IP地址直接判断它属于哪类地址的方法是,判断它的第一个十进制整数所在范围

A类:1.0.0.0 ~126.255.255.255

B类:128.0.0.0~191.255.255.255

C类:192.0.0.0~223.255.255.255

在所有IP地址中,以"127"开头的IP地址不可用于指定主机IP地址。它被称为回送地址,供计算机的各个网络进程之间进行通讯使用

网关地址:

设置主机的IP地址与子网掩码后,主机就可以使用IP地址与同一网段的其他主机进行通信了,但是不能与不同网段的主机进行通信

即使两台主机连接在同一台交换机(集线器)上, TCP/IP协议也会根据子网掩码判断主机处在不同的网络

为了实现不同网段主机之间的通讯,必须设置网关地址

DNS域名服务器地址:

通常人们使用容易记忆的域名来代替难以记忆的IP地址

为了能够使用域名,需要为计算机指定至少一个DNS域名服务器。由这个DNS域名服务器来完成域名解析的工作

域名解析包括两方面:正向解析(从域名到IP地址的映射),反向解析(从IP地址到域名的映射)

Internet 中存在着大量的DNS域名服务器,每台DNS域名服务器都保存着其管辖区域中主机域名与IP地址的对照表

网络的相关概念

Linux的网络接口

lo接口

lo接口表示本地回送接口,用于网络测试以及本地主机各网络进程之间的通信

无论什么应用程序,只要使用回送地址(127...*)发送数据都不进行任何正是的网络数据传输

eth接口

eth表示网卡设备接口,并附加数字来反映物理网卡的序号。如第一块网卡称为eth0,第二块网卡称为eth1

ppp接口

ppp表示ppp设备接口,并附加数字来反映ppp设备的序号。如第一个ppp接口称为ppp0,第二个ppp接口称为ppp1。采用ISDN或ADSL等方式接入Internet时使用ppp接口

Linux网络端口

采用TCP/IP协议的服务器可为客户机提供各种网络服务,如www、FTP等。为了区分不同类型的网络连接, TCP/IP利用端口号来进行区别

端口号的取值范围为0~65535。

根据功能不同,linux将其分为三类:

0~255:最常用的服务端口,包括FTP、WWW等

256~1024:其他的专用服务

1024~65535:动态分配

网络相关配置文件

/etc/sysconfig/network

常见配置项如下:

NETWORKING:值为yes或no,表示主机是否支持网络功能

HOSTNAME:主机名(即域名)

GATEWAY: 默认网关

FORWARD_IPV4:设置本机是否允许转发IPV4的数据包

DOMAINNAME:此台主机所属的网络域

GATEWAYDEV:连接网关的设备,例如eth0,如果是拨号用户则设为ppp0

/etc/sysconfig/network-scripts/ ifcfg-eth0

常见配置项如下:

DEVICE=eth0:设备名称

ONBOOT=yes:起动时是否起动该设备,省略该行表示yes

BOOTPROTO=none:启动协议,none表示使用用户设置的ip地址,dhcp表示从dhcp获得ip地址。省略该行表示使用设置的IP地址。

IPADDR=192.168.14.11:IP地址

NETMASK=255.255.255.0:子网掩码

BROADCAST=192.168.14.255:广播地址

NETWORK=192.168.14.0:网络地址

/etc/host.conf

域名解析配置文件,常见配置项如下:

order: 解析顺序

例如: order hosts,bind,nis: 先查询解析/etc/hosts文件,然后DNS,再是NIS

multi on:标识是否运行/etc/hosts文件允许主机指定多个地址,on为运行

nospoof on:是否允许服务器对ip地址进行欺骗,on为不允许

/etc/hosts

主机名列表文件/etc/hosts

格式:ip地址 主机名 别名

例如:192.168.14.15 qq.yys.com qq

/etc/resolv.conf

域名服务器设置文件,常见配置项如下:

nameserver:定义DNS服务器的IP地址

domain:定义本地域名

search:定义域名的搜索列表

sortlist:对返回的域名进行排序

注意:

search的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。

domain和search不能共存;如果同时存在,后者覆盖前者。

sortlist允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

etc/protocols

协议定义文件

格式:协议名称 协议号 别名

例如:tcp 6 TCP

/etc/services

网络服务列表文件

列出了系统支持的服务名称、服务使用的端口号和协议类型、服务的别名、

配置网络接口的工具

可以使用三种不同的工具完成:

网络几口配置程序netconfig(或ntsysv)

在终端输入命令netconfig(或ntsysv)

图形配置工具

开始/系统/配置本地网络或右击"网上邻居"

终端命令ifconfig

格式:ifconfig <设备名><IP地址>netmask <掩码>

例如:ifconfig eth0 192.168.15.11 netmask 255.255.255.0

网络接口的启动和禁用

网络控制程序network

/etc/init.d/network start|stop|restart

网络接口的查看

使用终端命令ifconfig方便地查看系统目前所有活跃网络接口的详细信息

例如:

ifconfig

ifconfig eth0

常用shell网络命令

hostname命令:查看或修改计算机的主机名


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8574079.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存