Я преобразовываю устройство, содержащее список сетевых интерфейсов, в кроссплатформенное. Текущая версия использует необработанный winsock для получения адреса, маски и широковещательного адреса для каждого сетевого интерфейса в системе.
Я полагаю, что самый простой способ сделать эту кросс-платформу — использовать Indy. Я обнаружил, что AddLocalAddressesToList
— это хороший простой способ получить IP-адреса всех интерфейсов, но я не могу найти другую необходимую мне информацию (маску и широковещательный адрес). Я думаю, что могу рассчитать широковещательный адрес, так что на самом деле это просто маска, которую я не могу понять.
к вашему сведению. Это код, который я нашел для получения IP-адресов всех интерфейсов.
TIdStack.IncUsage;
try
GStack.AddLocalAddressesToList(Memo1.Lines);
finally
TIdStack.DecUsage;
end;