我可以获得 DOS 6.22 操作系统的 IP 地址吗?
Can i get IP Address of DOS 6.22 Operating System?
我正在使用 DOS 6.22,我需要使用 C 程序提取我系统的 IP 地址。
int main()
{
int n;
struct ifreq ifr;
char array[] = "eth0";
n = socket(AF_INET, SOCK_DGRAM, 0);
//Type of address to retrieve - IPv4 IP address
ifr.ifr_addr.sa_family = AF_INET;
//Copy the interface name in the ifreq structure
strncpy(ifr.ifr_name , array , IFNAMSIZ - 1);
ioctl(n, SIOCGIFADDR, &ifr);
close(n);
//display result
printf("IP Address is %s - %s\n" , array , inet_ntoa(( (struct sockaddr_in *)&ifr.ifr_addr )->sin_addr) );
return 0;
}
但是错误错误是,它没有识别SIOCGIFADDR
变量,即使使用所有头文件。
DOS支持联网吗?
MS-DOS(我认为你与此相关,因为 6.22 是(如果不是)最后发布的版本之一;有一个 lot DOSes) 从来没有本地 IP 堆栈。
所以 没有 查询 IP "of a system" 的统一方法(或者实际上,MS-DOS 下的任何 networking-related 东西),因为 MS-DOS 从来没有任何网络 built-in,所以作为一个系统,它没有 IP 地址。也许一个单一的可执行文件构建了一个以太网,并且在此之上,一个 IP 连接,或者可能是一个驻留的伪驱动程序,但不是操作系统。
这意味着您正在使用 MS-DOS 存在的 数百 的 third-party IP 实现之一。你没有告诉我们是哪一个,所以我们帮不了你。
现在,您在编译未定义常量时会遇到错误 – 您可能没有使用正确的 #include
,或者没有将编译器配置为查看 headers 的正确目录.
无论如何,我建议您对 C 和 MS-DOS 有一点了解,最重要的是,弄清楚您使用的是哪种 IP 实现,以及从哪里获得相关文档。
我很确定 DOS 本身不支持 IP 网络。如果我没记错的话(这些东西是 许多 年前的,所以我可能记错了)当时有一些 TCP/IP 堆栈可用于 DOS -也许你可以挖掘其中的一些并使用它们。
但说真的,你为什么在 2016 年使用这样一个过时的OS?
我正在使用 DOS 6.22,我需要使用 C 程序提取我系统的 IP 地址。
int main()
{
int n;
struct ifreq ifr;
char array[] = "eth0";
n = socket(AF_INET, SOCK_DGRAM, 0);
//Type of address to retrieve - IPv4 IP address
ifr.ifr_addr.sa_family = AF_INET;
//Copy the interface name in the ifreq structure
strncpy(ifr.ifr_name , array , IFNAMSIZ - 1);
ioctl(n, SIOCGIFADDR, &ifr);
close(n);
//display result
printf("IP Address is %s - %s\n" , array , inet_ntoa(( (struct sockaddr_in *)&ifr.ifr_addr )->sin_addr) );
return 0;
}
但是错误错误是,它没有识别SIOCGIFADDR
变量,即使使用所有头文件。
DOS支持联网吗?
MS-DOS(我认为你与此相关,因为 6.22 是(如果不是)最后发布的版本之一;有一个 lot DOSes) 从来没有本地 IP 堆栈。
所以 没有 查询 IP "of a system" 的统一方法(或者实际上,MS-DOS 下的任何 networking-related 东西),因为 MS-DOS 从来没有任何网络 built-in,所以作为一个系统,它没有 IP 地址。也许一个单一的可执行文件构建了一个以太网,并且在此之上,一个 IP 连接,或者可能是一个驻留的伪驱动程序,但不是操作系统。
这意味着您正在使用 MS-DOS 存在的 数百 的 third-party IP 实现之一。你没有告诉我们是哪一个,所以我们帮不了你。
现在,您在编译未定义常量时会遇到错误 – 您可能没有使用正确的 #include
,或者没有将编译器配置为查看 headers 的正确目录.
无论如何,我建议您对 C 和 MS-DOS 有一点了解,最重要的是,弄清楚您使用的是哪种 IP 实现,以及从哪里获得相关文档。
我很确定 DOS 本身不支持 IP 网络。如果我没记错的话(这些东西是 许多 年前的,所以我可能记错了)当时有一些 TCP/IP 堆栈可用于 DOS -也许你可以挖掘其中的一些并使用它们。
但说真的,你为什么在 2016 年使用这样一个过时的OS?