ну во-первых возвращается массив из имен, соответственно 127.0.0.1
можно пропустить
можно опросить все сетевые интерфейсы при помощи ioctl(..,SOICGIFCONF,...)
//Это на Delphi переводить на C облом
function LocalIPS:TStrings;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
bufIps:Tstrings;
begin
bufIps:=TStringList.Create;//список IP адресов
bufIps.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do//добавляем в список адреса
begin
BufIps.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
LocalIps:=BufIps;
end;