Linux C代码中设置网卡ip地址和子网掩码

这篇具有很好参考价值的文章主要介绍了Linux C代码中设置网卡ip地址和子网掩码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux环境下,C语言代码中可以使用ioctl,使用其中的SIOCSIFADDR和SIOCIFNETMASK命令来设置网卡的ip地址和子网掩码

实例:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/in.h>

int set_ip_netmask(const char *name, const char *ip_addr, const char *ip_netmask)
{
int sock;
struct ifreq ifr;
in_addr_t in_addr;
struct sockaddr_in sin;
char ip[32] = {0};
int ret;

sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror(“socket”);
return -1;
}

memset(&ifr, 0, sizeof(struct ifreq));
memset(&sin, 0, sizeof(struct sockaddr_in));

sprintf(ifr.ifr_name, name);

sin.sin_family = AF_INET;
sin.sin_port = 0;
sin.sin_addr.s_addr = inet_addr(ip_addr);
memcpy(&(ifr.ifr_addr), &sin, sizeof(struct sockaddr));
ret = ioctl(sock, SIOCSIFADDR, (caddr_t)&ifr, sizeof(struct ifreq));
if (ret != 0) {
perror(“ioctl ip”);
return -1;
}

sin.sin_family = AF_INET;
sin.sin_port = 0;
sin.sin_addr.s_addr = inet_addr(ip_netmask);
memcpy(&(ifr.ifr_addr), &sin, sizeof(struct sockaddr));
ret = ioctl(sock, SIOCSIFNETMASK, (caddr_t)&ifr, sizeof(struct ifreq));
if (ret != 0) {
perror(“ioctl netmask”);
return -1;
}

return 0;
}文章来源地址https://www.toymoban.com/news/detail-453582.html

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

set_ip_netmask(“ens33”, “192.168.12.11”, “255.255.255.0”);

return 0;
}

到了这里,关于Linux C代码中设置网卡ip地址和子网掩码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ip地址、子网掩码、网段、子网划分

    Ip地址 由四个字节(32位二进制)组成,分成四组,每组八位二进制 一个简单的理解方式(并不真正是这样的):真正的网络地址划分图里右边三个框里的 例如A类,网络号是第一个八位的字节,最大是255,说明可以划分255个网络,然后容纳的主机就是后边的三个字节相乘2

    2024年02月05日
    浏览(34)
  • IP地址、子网掩码、网络地址、广播地址、IP网段

    本文主要讨论iPv4地址。 实际的 IP 地址是一串32 比特的数字,按照 8 比特(1 字节)为一组分成 4 组,分别用十进制表示然后再用圆点隔开,这就是我们平常经常见到的 IP 地址格式。 分类 范围 网络号 主机号 地址开始以(位) 默认子网掩码 用途 A类 1.0.0.0 - 126.0.0.0 前8位 后

    2024年02月09日
    浏览(62)
  • IP地址及子网掩码

    IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机

    2024年01月19日
    浏览(34)
  • 详解IP地址与子网掩码

    概念 IP地址是指互联网协议地址,又叫网际协议地址。 作用 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 格式 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(4个字节

    2023年04月15日
    浏览(33)
  • 广播地址和子网掩码之间有什么区别?子网掩码和ip冲突问题

    广播地址和子网掩码在计算机网络中各自扮演不同的角色,它们之间有着明显的区别。 广播地址 是一个特殊的IP地址,专门用于向网络中所有工作站发送信息。当设备发送数据包到广播地址时,所有连接到同一个网络的设备都会接收到该数据包。广播地址的存在使得向网络中

    2024年04月16日
    浏览(42)
  • IP地址,子网掩码和网关

    1.什么是ip地址 在网络中用来标识设备的具体地址,数据需要通过IP地址进行寻址传输。 1.1 IP地址 = 网络地址 + 主机地址,又称网络号和主机号构成。 A类:以0开头,第1字节为网络地址+后3个字节主机地址组成,地址范围0.0.0.0~127.255.255.255。可用的A类网络有126个网络,每个网

    2024年02月04日
    浏览(49)
  • IP地址,子网掩码,网段 概念详解

    IP地址是以 网络号 和 主机号 来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机,本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。 1. 子网掩码 1.1 子网

    2024年02月04日
    浏览(44)
  • IP地址基础:IP十进制与二进制转换、IP地址分类、子网掩码、子网划分

    目录 1、IP十进制与二进制转换 2、IP地址分类 3、子网掩码 4、子网划分 在网络中,通信节点需要有一个IP地址。 以点分十进制标识,由32位二进制组成。每8位为一小组,IP地址由4小组组成。 小组的第几位 8 7 6 5 4 3 2 1 二进制 0 0 0 0 0 0 0

    2024年02月04日
    浏览(50)
  • 网络:IP地址、子网掩码、网络地址、广播地址、网段、网关

    目录 一、IP地址 二、子网掩码 三、网络地址 四、广播地址 五、网段 六、网关 七、IP地址、子网掩码、网络地址、广指地址、网殷、网关的关系 参考链接  一、IP地址 IP地址是因特网协议(IP)中使用的一种数字标识符,用于唯一地标识网络中的设备。每台连接到因特网的设

    2024年02月09日
    浏览(59)
  • 如何算出IP地址、子网掩码、网络地址、广播地址、可用IP地址。

    本篇咱们从以下两个方面展开本篇的分享 重点理论 计算方法 IP地址分为IPV4和IPV6 IPV4 是由 32位二进制 组成,一般用 点十进制 来表示。 IPV6 是由 128位 组成,一般用 冒号分隔,十六进制 表示 由于咱们目前主用的是IPV4,所以接下来的内容咱们就围绕IPV4来分享。 IPV4分为私有网

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包