Estoy buscando urgentemente una pregunta de programación en lenguaje C sobre dirección IP y máscara de subred (implementada en lenguaje C)
No sé si alguna vez has estudiado redes de ordenadores. Si no, aquí hay una breve introducción a las direcciones IP y máscaras.
La dirección IP es de 32 bits, que son 4 bytes. El valor puede ser arbitrario.
La máscara también es de 32 bits. Generalmente se recomienda que los primeros bits sean todos 1 y los últimos bits sean 0. Entonces esta pregunta:
(1) Siempre que sea de 32 bits, es válida.
(2) Determine si todos los 1 van seguidos de todos los 0, lo que se puede implementar con el siguiente código:
#includelt; void main()
{
yanma sin firmar, bianliang=0x80000000;
int isyanma=0, i
printf(" Utilice hexadecimal Introduzca un entero de 32 bits\n");
scanf("x",& yanma);
for(i=0;ilt;32;i)
{
if(yanma==bianliang)
{
isyanma=1
romper; /p >
}
bianliang=bianlianggt; gt;
bianliang =0x80000000
}
si( isyanma)
printf("x es una máscara\n", yanma
else
printf("x no es una máscara\n",); yanma);
}
(3) Si los primeros n bits de la máscara son 1, entonces todas las direcciones IP válidas de la red donde se encuentra esta IP son los primeros n bits. de esta dirección IP sin cambios, y lo siguiente Los bits varían de 0 a 1. Por ejemplo, si la dirección IP es 1.1.1.1 y la máscara es FFFF0000, entonces todas las direcciones IP válidas de la red donde se encuentra esta dirección IP son de 1.1.0.0 a 1.1.255.255.
(4) A ambas direcciones IP se les aplica un AND binario con la máscara para ver si los resultados son los mismos. Si son iguales, están en la misma subred; de lo contrario, no están en la misma subred. Esto es fácil de implementar usando c.