Toon posts:

ip adres verhogen in C/c++

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een ip adres in een char, en die zou ik met een willen verhogen.

dus dat 100.10.2.133 100.10.2.134 wordt.

ik moet daarvoor een functie maken, maar ik heb nog geen idee hoe.

rremzie

  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
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. :)

"The fastest code, is the code that is never called."


  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 15-09 01:12

Jrz

––––––––––––

dword ip = 0x640a0285;
ip++;
klaar.
:)

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Verwijderd

Topicstarter
Thankz, ik ga er even naar kijken

Verwijderd

The winsock way:

#include <stdio.h>
#include <Winsock2.h>


int main()
{
char cIP[16];
strcpy(cIP,"192.168.100.100");

//union van long, 2 short, 4 byte
in_addr iaIP;

//convert string ip naar long
iaIP.S_un.S_addr = inet_addr(cIP);

//verhoog byte 4
iaIP.S_un.S_un_b.s_b4++;

//convert terug naar string
strcpy(cIP,inet_ntoa(iaIP));

return 0;
}