Здравствуйте, LuIng, Вы писали:
LI>Как опредилить IP адрес машины, на которой работает программа?
Для разнообразия — в
поиск.
Здравствуйте, Flamer, Вы писали:
LI>>Как опредилить IP адрес машины, на которой работает программа?
#include <windows.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char sUserName[256] = {0};
int unsigned long dwUserNameLength=255;
try
{
if (GetUserName(sUserName,&dwUserNameLength) == true)
ShowMessage(sUserName);
}
catch (...) {
ShowMessage("avaria GetUserName");
exit(-1);
}
hostent *hEnt = gethostbyname( sUserName );
in_addr stInetAddress;
if ( hEnt ) {
for ( int ilAddrIndex = 0; hEnt->h_addr_list[ ilAddrIndex ]; ilAddrIndex++ )
stInetAddress.S_un.S_addr =
*( ( DWORD* ) hEnt->h_addr_list[ ilAddrIndex ] );
String ip = inet_ntoa( stInetAddress );
ShowMessage(ip);
}
}
SuserName — нормально
ip — не определен
В чем дело ?
Здравствуйте, alex_dorin, Вы писали:
_>Здравствуйте, Flamer, Вы писали:
[]
_>SuserName — нормально
_>ip — не определен
А какая связь текущего имени пользователя и локального IP?
В общем, напишу таки кусочек кода еще раз

:
WSADATA wsa;
WSAStartup(MAKEWORD(1,0),&wsa);
char hostname[1024] = {0};
if(!gethostname(hostname,1024))
{
ShowMessage(hostname);
hostent* pHE = gethostbyname(hostname);
if(pHE)
{
u_long localIP = *((u_long*)pHE->h_addr_list[0]);
ShowMessage(localIP);
BYTE* b = (BYTE*) &localIP;
String strIP = String().sprintf("%u.%u.%u.%u",*b,*(b+1),*(b+2),*(b+3));
ShowMessage(strIP);
}
}
WSACleanup();
Здравствуйте, Flamer, Вы писали:
Плюс иметь ввиду, что их (IP-адресов) может быть несколько у одного компьютера. Плюс адрес "127.0.0.1", означающий "этот компьютер", если стек TCP/IP активен.
... << RSDN@Home 1.1 beta 2 >>