Как можно получить все ip адреса компа (а вдруг у юзера несколько (больше одного) сетевых адаптеров)?? ЗЫ Инди не подойдет - много весит!
Если это тонкий намек на то, что мне в [Delphi]/[Pascal] Задай вопрос, получи ответ, то уж извеняйте!! , а если нет, то я непонял.... И всё-же по теме?? Пытался код из индюка вытащить - получилось что-то унылое... и вылетающее по причине Access violation
можно через сырые сокеты делать это типа так: Code: var n_addr : integer; // Хранит кол-во найденный интерфейсов n, a : integer; // Дополнительные переменные raw_socket:tsocket; // Переменная для создания сокета WSData:tWSAData; // Переменная для инициализации библиотеки сокетов llist:packed record iAddressCount : Integer; Address : Array [0..10] of SOCKET_ADDRESS; end; begin // инициализация библиотеки сокетов if WSAStartup($202, WSData)<>0 then Errors('[-] WSAStartup'+#13#10) else Oks('[+] WSAStartup'+#13#10); // создание сокета raw_socket:=socket(AF_INET, SOCK_RAW, IPPROTO_IP); // проверка на ошибки if raw_socket=INVALID_SOCKET then Errors('[-] Create RAW socket'+#13#10) else Oks('[+] Create RAW socket'+#13#10); // получаем все интерфейсы? что есть на компьютере. if WSAIoctl(raw_socket, SIO_ADDRESS_LIST_QUERY, nil, 0,@llist, 1024, @n, nil, nil)=SOCKET_ERROR then Errors('[-] WSAIoctl'+#13#10) else Oks('[+] WSAIoctl'+#13#10); n_addr:=llist.iAddressCount; // получение количества интерфейсов // если кол-во интерфейсов=0, то ошибка if n_addr=0 then Errors('[-] Interface count: 0'+#13#10) else Oks('[+] Interface count: '+inttostr(n_addr)+#13#10); // вывод IP-адресов всех найденных интерфейсов for a:=0 to n_addr-1 do begin s:=inet_ntoa(llist.Address[a].lpSockaddr.sin_addr); Oks(' Interface fount: '+s+#13#10); end;
2 Gray_Wolf нет не проще. Это самый быстрый способ. Да и не очень то и большой. А вот запустить программу, получить её вывод и отпарсить - это однако боле напряжнее на систему. Тыже чтобы сложит в программа 5+6 не запускаеш калькулятор, не вставляеш туда данные и не эмулируеш нажатия на кнопку Enter