Ip und Subnetzmaske



  • Hab ein kleines Praogram das mir die IP und die Netzmaske eines Interfaces liefern soll:

    /* net.c */
    #include "net.h"
    #include "headers.h"
    
    struct in_addr getIP(char *iface) {
    
    	int fd;
    	struct ifreq ifip;
    
    	fd = socket(AF_INET, SOCK_DGRAM, 0);
    	ifip.ifr_addr.sa_family = AF_INET;
    	strncpy(ifip.ifr_name, iface, IFNAMSIZ-1);
    	ioctl(fd, SIOCGIFADDR, &ifip);
    	close(fd);
    
    	return ((struct sockaddr_in *) &ifip.ifr_addr)->sin_addr;
    }
    
    struct in_addr getMask(char *iface) {
    
    	int fd;
    	struct ifreq ifmask;
    
    	fd = socket(AF_INET, SOCK_DGRAM, 0);
    	ifmask.ifr_addr.sa_family = AF_INET;
    	strncpy(ifmask.ifr_name, iface, IFNAMSIZ-1);
    	ioctl(fd, SIOCGIFNETMASK, &ifmask);
    	close(fd);
    
    	return ((struct sockaddr_in *) &ifmask.ifr_addr)->sin_addr;
    }
    
    /* test.c */
    #include "net.h"
    #include "headers.h"
    
    int main(void) {
    
    printf("%s\n%s", inet_ntoa(getIP("wlan0"), inet_ntoa(getMask(wlan0")));
    
    return 0;
    
    }
    

    Nur gibs mir in diesem Fall jetzt 2x die IP aus, wieso??


  • Mod

    Das ist nicht wirklich eine C-Frage. Da ich mit mit rohen Sockets nicht so auskenne, als dass ich erkennen könnte ob das nun Winsockets oder POSIX-Sockets sind: Wohin möchtest du verschoben werden?



  • sind POSIX sockets...



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten