Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

hi,

siehe Thema. Gibt es dafür schon fertige Libraries in c?

Viele Grüße!

mir sind leider noch keine fertigen Libs untergekommen. Aber Du hast doch so etwas sehr schnell implementiert, es sind doch bloß ein paar Bitverknüpfungen pro Okttet und ein paar Shifts.

Ok, in der Tat hab ich schon angefangen, eine kleine Lib zu schreiben. Falls Interesse, kann ich das ja mal hier veröffentlichen, untenstehend schon mal eine Auswahl der bisherigen Funktionen.

Viele Grüße!


   /* Struktur für ein Netz */


struct netx{

	unsigned long ipaddr;   // IP-Adresse numerisch

	int masklen;            // 0..30

	unsigned long netmask;  // Netzmaske numerisch

	unsigned long netaddr;  // Netzadresse numerisch

	unsigned long bcaddr;   // Broadcastadresse numerisch

	char netmasks[20];      // Netzmaske als String like 255.0.0.0

	char ipaddrs[20];       // IP-Adresse als String like 172.31.11.12

	char netaddrs[20];      // Netzadresse als String like 0.0.0.0

	char bcaddrs[20];       // Broadcastadresse als String like 255.255.255.255

	char defaultclass[20];  // Default Class A, B, C, D, E

};


/*************************************************************************/


   /* Funktionen dieser Library */


// splittet nach "." und "/"

// nice to use for 172.31.32.0/24

void split(int * ar, char buffer[]);


// rechnet ip (4 Oktetten einzeln übergeben) nach numerisch

// und gibt ipnum zurück

int ip_to_num(int a, int b, int c, int d);


// rechnet aus numerischer IP die 4 Oktetten zurück

// legt die 4 Oktetten auf eine Array, was per Pointer übergeben wurde

void num_to_okt(int * ar, unsigned long ipnum);


// legt den IP-String auf das übergebene Array

void ipdots(char * ips, unsigned long ipnum);


// ermittelt die Default Class aus der ersten Oktette

// 0 class   A   0-127

// 10 class  B   128-191

// 110 class C   192-223

// 111 class D   224-239

// 1111 class E  ab 240

void default_class(char buffer[], int okt);


// ip-Adresse validieren

int valip(int a, int b, int c, int d);


// ein IP-String wie 255.255.255.255/30 darf nicht länger als 18 sein

int valips(char buffer[]);


// maskenlänge zu einer uint 32 bit Zahl umrechnen

// masklen 0..30 !!!

// gibt -1 zurück, wenn Maskenlänge nicht passt, z.B. wenn die Bits

// nicht aufeinanderfolgend sind

int masklen_to_num(int masklen);


// numerische Maske (32 unsigned int) nach Maskenl. 0..32 umrechnen

int num_to_masklen(unsigned long n);



// gibt die Netzadresse numerisch zurück (ipnum, maskenum)

int get_netaddr(unsigned long ipnum, unsigned long masknum);


// gibt die Broadcastadresse numerisch zurück (ipnum, maskenum)

int get_bcaddr(unsigned long ipnum, unsigned long masknum);


// Funktion belebt das struct net mit Werten

// Übergabe der Oktetten einer beliebigen IP-Adresse

// Übergabe der Maskenlänge 0..30

void fillnet(struct netx *, int o1, int o2, int o3, int o4, int mlen);


Jow,

und wo ich so gerne Artikel schreibe, ich habe fertig:

Berechnungen von IP-Adressen und Subnetzen mit c

meinen Artikel über meine Library.

Als kleine Gegenleistung für die 255.255.255.255 Community, bei denen ich schon so manchen Kniff gelernt habe.

Viele Grüße,

Rolf

PS: Kritiken lese ich gerne!!!!!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.