The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Почему не берётся адрес сетевого интерфейса в программе на Си?, !*! Андрей, 25-Ноя-04, 20:08  [смотреть все]
Не могу взять адрес сетевого интерфейса. Может кто посоветует что?(где копать или в чём ошибся).
Заранее благодарю.

Вот текст прграммы:

----------------------------------------

#include <linux/types.h>
#include <linux/socket.h>
#include <linux/ioctl.h>
#include <linux/if.h>
#include <linux/in.h>


char * intf = "eth0";


int main ()
{

struct ifparam
{
  __u32 ip;
  __u32 mask;
  int mtu;
  int index;
} ifp;


  int fd;
  struct sockaddr_in s;
  struct ifreq ifr;

  memset ((void *)&ifr, 0, sizeof (struct ifreq));
  if ((fd = socket (AF_INET, SOCK_DGRAM, 0))<0)
    return -1;
  
  sprintf (ifr.ifr_name, "%s", intf);
  
  memset ((void *)&s, 0, sizeof (struct sockaddr_in));
  memcpy ((void *)&s, (void *)&ifr.ifr_addr, sizeof (struct sockaddr_in));
  memcpy ((void *)&ifp.ip, (void *)&s.sin_addr.s_addr, sizeof (__u32));

  printf ("%s\n", inet_ntoa(ifp.ip));

  return ifp.ip;
}
-----------------------------------------------------------
Вот вывод программы: 0.0.0.0

Почему так?

С уважением,
Андрей.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру