Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать свой IP, Выкладываем способы узнавания своего IP 
:(
    Опции темы
RDC
Дата 2.4.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



Выкладываю первый корявый способ.
Код

#include <winsock2.h>

AnsiString out = "WinSock ERR";
WSADATA wsaData; 
if (!WSAStartup(WINSOCK_VERSION, &wsaData)){char chInfo[64];
   if (!gethostname(chInfo, sizeof(chInfo))) {
      hostent *sh;
      sh=gethostbyname((char*)&chInfo);
      if (sh!=NULL) {
         int nAdapter = 0;
         while (sh->h_addr_list[nAdapter]) {
            struct sockaddr_in adr;
            memcpy(&adr.sin_addr, sh->h_addr_list[nAdapter], sh->h_length);
            out = inet_ntoa(adr.sin_addr);
            nAdapter++;
         }
      }
   }
}
WSACleanup();
ShowMessage(out);

--------------------
Живопись
PM MAIL   Вверх
mrbrooks
Дата 2.4.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Имхо к Билдеру твой вариант это не имеет ни какого отношения  smile Написано то все на сокетах. А не с помощью компонентов.  Поэтому лучше махнуть в раздел по сетям.  
PM MAIL   Вверх
UniBomb
Дата 2.4.2008, 13:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 97



или ещё вот так:


Код

/*...*/
Label1->Caption = "Your IP is - 127.0.0.0";
/*...*/



--------------------
PM MAIL ICQ Skype   Вверх
gta4kv
Дата 2.4.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



UniBomb, интересный метод)) правда не самый лучший если задача узнать IP который в инет)
PM MAIL   Вверх
UniBomb
Дата 2.4.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 97



gta4kv, Ну я ни на что не претендую.... Это код для.... скажем компьютеров, неподлюченных ни к чему))


--------------------
PM MAIL ICQ Skype   Вверх
Bima
Дата 2.4.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Вот первый способ....
Код

void __fastcall TForm1::FormActivate(TObject *Sender)
{
//*************Параметры компьютера**************
char NameComputer[MAX_COMPUTERNAME_LENGTH+1];
unsigned long NameComputerLen=MAX_COMPUTERNAME_LENGTH+1;
GetComputerName(NameComputer,&NameComputerLen);
PWname->Caption=NameComputer;
PWHost->Caption=Serv1->LocalIP;
}
//---------------------------------------------------------------------------

вот часть загаловочного файла
TNMMSGServ *Serv1;

Вот второй способ, хотя он почти один в один, как в шапке, но есть небольшие различия:
Код

void __fastcall TForm1::FormActivate(TObject *Sender)
{
//***************** Определение IP компа *****************
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 0);
err = WSAStartup(wVersionRequested, &wsaData);
if(err == 0)
   {
   char hn[1024];
   struct hostent *adr;
   if(gethostname((char *)&hn, 1024))
      {
      err = WSAGetLastError();
      Beep();
      //Здесь используем код ошибки
      }
   adr = gethostbyname(hn);
   if(adr)
      {
      char *LocalIp = new char[15];
      sprintf(LocalIp,"%d.%d.%d.%d",
      (unsigned char)adr->h_addr_list[0][0],
      (unsigned char)adr->h_addr_list[0][1],
      (unsigned char)adr->h_addr_list[0][2],
      (unsigned char)adr->h_addr_list[0][3]);
      Panel1->Caption=LocalIp; //Выводим IP адрес
      }
   }
else
   {
   ShowMessage("Ошибка");
   }
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Bima - 2.4.2008, 14:29


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
akaGreg
Дата 5.4.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.4.2008

Репутация: нет
Всего: нет



А ещё можно вот таким способом:
Сделайте вот такой файл:
Код

#include <winsock2.h>


Затем уже сам код:
Код

AnsiString out = "WinSock ERR";
WSADATA wsaData; 
if (!WSAStartup(WINSOCK_VERSION, &wsaData)){char chInfo[64];
if (!gethostname(chInfo, sizeof(chInfo)))
{
hostent *sh;
sh=gethostbyname((char*)&chInfo);
if (sh!=NULL)
{
int nAdapter = 0;
while (sh->h_addr_list[nAdapter])
{
struct sockaddr_in adr;
memcpy(&adr.sin_addr, sh->h_addr_list[nAdapter], sh->h_length);
out = inet_ntoa(adr.sin_addr);
nAdapter++;
}
}
}
}
WSACleanup();
ShowMessage(out);

PM MAIL ICQ   Вверх
Dmi3ev
Дата 6.4.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



разместить компонент Powersock1
Код

ShowMessage(Powersock1->LocalIP);


Добавлено через 35 секунд
по-моему так, если ничего не путаю)))

Добавлено через 1 минуту и 17 секунд
он во вкладке FastNet, по-моему)))


--------------------

PM MAIL   Вверх
RDC
Дата 15.4.2008, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



2 Dmi3ev

Да чувак, это то что нужно. Спасибо тебе. 
--------------------
Живопись
PM MAIL   Вверх
popapo
Дата 25.4.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 23.2.2008

Репутация: 1
Всего: 1



А как можно WAN IP узнать?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.