Ik weet niet of hier functies voor zijn, niet naar gekeken, dus ik bedenk/improviseer nu effe heel erg snel wat.
Het mooiste en beste is als je de verschillende delen van een IP-adres 'parsed' in kleinere delen. Dat wil zeggen dat je iedere reeks cijfers tot aan de punt apart behandeld.
Voorbeeld (niet diep over nagedacht, maar snel opgezet dus misschien inclusief fouten).
code:
1
2
3
4
5
6
7
8
9
10
| int iPart1 = 0,
iPart2 = 0,
iPart3 = 0,
iPart4 = 0,
iStrIndex = 0;
iPart1 = GetIPParts(strIPAddress, &iStrIndex);
iPart2 = GetIPParts(strIPAddress, &iStrIndex);
iPart3 = GetIPParts(strIPAddress, &iStrIndex);
iPart4 = GetIPParts(strIPAddress, &iStrIndex); |
Functie GetIPParts
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| int GetIPParts(char *pString, int *iIndex)
{
char sTempBuffer[10];
int iTempIndex = 0;
while((pString[*iIndex] != '.') && (pString[*iIndex] != '\0'))
{
sTempBuffer[iTempIndex] = pString[*iIndex];
iTempIndex++;
*iIndex++;
}
// Sla de punt over de volgende keer.
*iIndex++;
return(atoi(sTempBuffer));
} |
Nu heb je dus de vier delen van een IP-adres apart. Deze kun je nu apart verhogen. Begin het part4 te verhogen, is deze groter geworden als 255, zet hem op 0 en verhoog part 3 etc. Van de vier delen kun je weer strings maken door de integers te converteren naar chars (functie itoa) en de strings dan aan elkaar te plakken (functie strcat of zo).
Veel plezier met verder uitzoeken.