Как получить IP адреса своего компьютера
Как на Builder-e получить локальные IP адреса и их маски подсети не только 1-й сетевой корты но и всех остальных????????
void MachineIP(char *result)
{
WSADATA WSAData;
WSAStartup(MAKEWORD(1,1), &WSAData);
char dot[6];
int iResult;
int i = 0;
u_long *ppIpNO;
u_long *pIpNO;
HOSTENT FAR *lphostent;
u_long ipHO;
unsigned char binIp[4];
int iterations = 0;
char szHostName[100];
*result = 0;
iResult = gethostname(szHostName, sizeof(szHostName));
// printf("%d %s",iResult,szHostName);
if ((iResult != 0) || (lstrcmp(szHostName, "")==0))
return;
lphostent = gethostbyname(szHostName);
if (lphostent == NULL)
return;
do
{
iterations++;
ppIpNO = (u_long *)lphostent->h_addr_list;
if (ppIpNO+i == NULL)
return;
pIpNO = ((u_long *)*(ppIpNO+i));
if (pIpNO == NULL)
return;
ipHO = ntohl(*pIpNO);
binIp[0] = (BYTE)((ipHO & 0xff000000) >> 24);
itoa(binIp[0], dot, 10);
strcat(result,dot);
binIp[1] = (BYTE)((ipHO & 0x00ff0000) >> 16);
itoa(binIp[1], dot, 10);
strcat(result, "."); strcat(result, dot);
binIp[2] = (BYTE)((ipHO & 0x0000ff00) >> 8);
itoa(binIp[2], dot, 10);
strcat(result, "."); strcat(result, dot);
binIp[3] = (BYTE)(ipHO & 0x000000ff);
itoa(binIp[3], dot, 10);
strcat(result,"."); strcat(result, dot);
strcat(result,"rn");
i++;
} while ((pIpNO != NULL) && (iterations < 6));
WSACleanup();
PostQuitMessage(0);
return;
}
[ Это Сообщение было отредактировано LDan в 2002-03-14 0858 ]
Вы предложили очень крутой вариант...
Если хватит мозгов потом попробую разобрать :-))))
А пока более простой вариант просмотреть в реестре веточку
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\
Там есть все что надо и даже больше :-))))))
С уважением и почитанием к вашим знаниям (кроме шуток)