LINUX.ORG.RU

    int skfd;
    struct ifconf ifc;
    struct ifreq *ifr;
    int num;
    char buff[1024];
    int i;

    if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        printf("Can't create socket: %s\n", strerror(errno));
        return -1;
    }

    ifc.ifc_len = sizeof(buff);
    ifc.ifc_buf = buff;
    net->ifaces = NULL;
    if (ioctl(skfd, SIOCGIFCONF, &ifc) < 0) {
        printf("SIOCGIFCONF failed: %s\n", strerror(errno));
        close(skfd);
        return -1;
    }

    ifr = ifc.ifc_req;
    num = ifc.ifc_len / sizeof(struct ifreq);

Dead ★★★★
()

Вот такое есть:

struct ifaddrs* ifa, *ifptr;
getifaddrs(&ifa);
ifptr = ifa;
while (ifptr->ifa_next) {

    struct sockaddr_in* in = (struct sockaddr_in*)ifptr->ifa_addr;
    if (in->sin_family == AF_INET && strcmp(ifptr->ifa_name, "eth0") == 0)
        networkAddress = (char*)inet_ntoa(in->sin_addr);

    ifptr = ifptr->ifa_next;
}
freeifaddrs(ifa);

mv ★★★★★
()
Ответ на: комментарий от mv

В инклюдах:

#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <arpa/inet.h>

mv ★★★★★
()

Спасибо всем большое! то что нужно

anonymous
()

И еще один вопрос ).
Если на машине с несколькими сетевухами я пошлю пакет вот таким образом (Python):

    mess = construct_message()
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sock.sendto(mess, ("<broadcast>", 67))
    sock.close()

, то на какой интерфейс он уйдет? Или, может, на все сразу?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.