C 套接字编程 - 如何更改我的 IP?

问题描述 投票:0回答:1

我想知道如何在 C 中更改我的 IP 地址。假设我想用 C 中的函数 socket()、bind()、listen()、accept() 连接到一个服务器,接收()和发送()。连接服务器时可以更改我的电脑的IP地址吗?

我想更改它,以便当我访问互联网并在搜索引擎中输入“我的IP是什么”时,它会显示我连接到C的IP地址。这可能吗?如果有的话,有没有这方面的源码供我学习?我不想只是复制和粘贴,我想理解并知道这是如何工作的。

c sockets server client webserver
1个回答
0
投票

Linux:您可以通过以下方式更改机器 IP 地址:

  1. 使用ioctl
    struct ifreq ifr;
    const char * name = "eth1";
    int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
    strncpy(ifr.ifr_name, "eth0", IFNAMSIZ);  // your interface name

    ifr.ifr_addr.sa_family = AF_INET;
    struct sockaddr_in* addr = (struct sockaddr_in*)&ifr.ifr_addr;
    inet_pton(AF_INET, "5.4.3.2", &addr->sin_addr);
    ioctl(fd, SIOCSIFADDR, &ifr);

    inet_pton(AF_INET, "255.255.255.0", &addr->sin_addr);
    ioctl(fd, SIOCSIFNETMASK, &ifr);

    ioctl(fd, SIOCGIFFLAGS, &ifr);
    ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);

    ioctl(fd, SIOCSIFFLAGS, &ifr);

或使用

iflib
https://www.ecb.torontomu.ca/~courses/ee8205/Data-Sheets/Tornado-VxWorks/vxworks/ref/ifLib.html

© www.soinside.com 2019 - 2024. All rights reserved.