我想知道如何在 C 中更改我的 IP 地址。假设我想用 C 中的函数 socket()、bind()、listen()、accept() 连接到一个服务器,接收()和发送()。连接服务器时可以更改我的电脑的IP地址吗?
我想更改它,以便当我访问互联网并在搜索引擎中输入“我的IP是什么”时,它会显示我连接到C的IP地址。这可能吗?如果有的话,有没有这方面的源码供我学习?我不想只是复制和粘贴,我想理解并知道这是如何工作的。
Linux:您可以通过以下方式更改机器 IP 地址:
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