Как опредилить IP адрес
От: LuIng  
Дата: 11.09.03 12:47
Оценка:
Как опредилить IP адрес машины, на которой работает программа?
Re: Как опредилить IP адрес
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 11.09.03 12:52
Оценка:
Здравствуйте, LuIng, Вы писали:

LI>Как опредилить IP адрес машины, на которой работает программа?


Для разнообразия — в поиск.
Re[2]: Как опредилить IP адрес
От: alex_dorin Россия  
Дата: 12.09.03 07:24
Оценка:
Здравствуйте, 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@rambler.ru
Re[3]: Как опредилить IP адрес
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 12.09.03 13:09
Оценка: +1
Здравствуйте, 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();
Дополнение (маленькое)
От: akasoft Россия  
Дата: 12.09.03 16:32
Оценка:
Здравствуйте, Flamer, Вы писали:

Плюс иметь ввиду, что их (IP-адресов) может быть несколько у одного компьютера. Плюс адрес "127.0.0.1", означающий "этот компьютер", если стек TCP/IP активен.
... << RSDN@Home 1.1 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.