Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 08.08.2012
Сообщений: 11

Найти основной шлюз

08.08.2012, 21:07. Показов 2585. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь, надо найти основной шлюз и полученные данные перевести с строковый тип, заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.08.2012, 21:07
Ответы с готовыми решениями:

Вывести на экран основной шлюз (IP)
Здравствуй мой посетитель:). я никак не смог найти оперетора который покажет мне какой в моменте подключен адаптер. вернее в cmd при...

Основной шлюз
можете обьяснить что такое основной шлюз в сети?? я так понимаю что это устройство через которое происходит обмен между устройствами данной...

Получить основной шлюз
Как получить адрес основного шлюза? в Qt не нашел как это сделать, мб есть еще способы? вообще надо это сделать для android, но для...

7
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2012, 21:17
Что подразумевается под шлюзом?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
08.08.2012, 21:29
freaheat, ну к примеру
C++
1
2
    AnsiString command =  AnsiString( getenv("COMSPEC") ) + " /c  ipconfig /all >C:\ipcfg.txt";
    WinExec(command.c_str(),SW_HIDE);
Как то так, потом открываете к примеру в memo ipcfg.txt и находите строку Основной шлюз и выводите её куда душа пожелает)
0
1 / 1 / 0
Регистрация: 08.08.2012
Сообщений: 11
12.08.2012, 17:52  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Что подразумевается под шлюзом?

Под основным шлюзом подразумеваю шлюз по умолчанию на сетевой карте.

Добавлено через 4 минуты
Цитата Сообщение от Ddv122 Посмотреть сообщение
freaheat, ну к примеру
C++
1
2
    AnsiString command =  AnsiString( getenv("COMSPEC") ) + " /c  ipconfig /all >C:\ipcfg.txt";
    WinExec(command.c_str(),SW_HIDE);
Как то так, потом открываете к примеру в memo ipcfg.txt и находите строку Основной шлюз и выводите её куда душа пожелает)

К сожалению не подайдет такой вариант, может есть функция чтоб определить шлюз и тут ещё беда в том что может в компе быть две сетевые и тогда надо определить и второй шлюз.
За вариант спасибо.
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
16.08.2012, 21:54
freaheat, ну тогда не ленитесь и поищите на форуме
Тема обсуждалась!
или WINAPI
GetAdaptersInfo. ПОЛЕ AdapterInfo->GatewayList.IpAddress.String
2
1 / 1 / 0
Регистрация: 08.08.2012
Сообщений: 11
17.08.2012, 16:14  [ТС]
Цитата Сообщение от Ddv122 Посмотреть сообщение
freaheat, ну тогда не ленитесь и поищите на форуме
Тема обсуждалась!
или WINAPI
GetAdaptersInfo. ПОЛЕ AdapterInfo->GatewayList.IpAddress.String
нашел на MSDN пример как перевести эти данные в строку и вывести в компонент Label, заранее спасибо.
int __cdecl main()
{

PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;
UINT i;

struct tm newtime;
char buffer[32];

ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO));
if (pAdapterInfo == NULL) {
printf("Error allocating memory needed to call GetAdaptersinfo\n");
return 1;
}

if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
FREE(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen);
if (pAdapterInfo == NULL) {
printf("Error allocating memory needed to call GetAdaptersinfo\n");
return 1;
}
}

if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
pAdapter = pAdapterInfo;
while (pAdapter) {
printf("\tComboIndex: \t%d\n", pAdapter->ComboIndex);
printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
printf("\tAdapter Addr: \t");
for (i = 0; i < pAdapter->AddressLength; i++) {
if (i == (pAdapter->AddressLength - 1))
printf("%.2X\n", (int) pAdapter->Address[i]);
else
printf("%.2X-", (int) pAdapter->Address[i]);
}
printf("\tIndex: \t%d\n", pAdapter->Index);
printf("\tType: \t");
switch (pAdapter->Type) {
case MIB_IF_TYPE_OTHER:
printf("Other\n");
break;
case MIB_IF_TYPE_ETHERNET:
printf("Ethernet\n");
break;
case MIB_IF_TYPE_TOKENRING:
printf("Token Ring\n");
break;
case MIB_IF_TYPE_FDDI:
printf("FDDI\n");
break;
case MIB_IF_TYPE_PPP:
printf("PPP\n");
break;
case MIB_IF_TYPE_LOOPBACK:
printf("Lookback\n");
break;
case MIB_IF_TYPE_SLIP:
printf("Slip\n");
break;
default:
printf("Unknown type %ld\n", pAdapter->Type);
break;
}

printf("\tIP Address: \t%s\n",
pAdapter->IpAddressList.IpAddress.String);
printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);

printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
printf("\t***\n");

}

if (pAdapterInfo)
FREE(pAdapterInfo);

return 0;
}
}
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.08.2012, 17:05
freaheat, удачи)только код пускайте под тег
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
int __cdecl main()
 {
 
 PIP_ADAPTER_INFO pAdapterInfo;
 PIP_ADAPTER_INFO pAdapter = NULL;
 DWORD dwRetVal = 0;
 UINT i;
 
 struct tm newtime;
 char buffer[32];
 
 ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
 pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO));
 if (pAdapterInfo == NULL) {
 printf("Error allocating memory needed to call GetAdaptersinfo\n");
 return 1;
 }
 
 if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
 FREE(pAdapterInfo);
 pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen);
 if (pAdapterInfo == NULL) {
 printf("Error allocating memory needed to call GetAdaptersinfo\n");
 return 1;
 }
 }
 
 if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
 pAdapter = pAdapterInfo;
 while (pAdapter) {
 printf("\tComboIndex: \t%d\n", pAdapter->ComboIndex);
 printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
 printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
 printf("\tAdapter Addr: \t");
 for (i = 0; i < pAdapter->AddressLength; i++) {
 if (i == (pAdapter->AddressLength - 1))
 printf("%.2X\n", (int) pAdapter->Address[i]);
 else
 printf("%.2X-", (int) pAdapter->Address[i]);
 }
 printf("\tIndex: \t%d\n", pAdapter->Index);
 printf("\tType: \t");
 switch (pAdapter->Type) {
 case MIB_IF_TYPE_OTHER:
 printf("Other\n");
 break;
 case MIB_IF_TYPE_ETHERNET:
 printf("Ethernet\n");
 break;
 case MIB_IF_TYPE_TOKENRING:
 printf("Token Ring\n");
 break;
 case MIB_IF_TYPE_FDDI:
 printf("FDDI\n");
 break;
 case MIB_IF_TYPE_PPP:
 printf("PPP\n");
 break;
 case MIB_IF_TYPE_LOOPBACK:
 printf("Lookback\n");
 break;
 case MIB_IF_TYPE_SLIP:
 printf("Slip\n");
 break;
 default:
 printf("Unknown type %ld\n", pAdapter->Type);
 break;
 }
 
 printf("\tIP Address: \t%s\n",
 pAdapter->IpAddressList.IpAddress.String);
 printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);
 
 printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
 printf("\t***\n");
 
 }
 
 if (pAdapterInfo)
 FREE(pAdapterInfo);
 
 return 0;
 }
 }
1
1 / 1 / 0
Регистрация: 08.08.2012
Сообщений: 11
31.08.2012, 15:48  [ТС]
После поисков инфы и чтения книг вот что получилось. Как мне вывести на экран шлюз
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int n () {
 
   IP_ADAPTER_INFO * AdapterInfo;
   ULONG    ulOutBufLen;
   DWORD    dwRetVal;
   IP_ADDR_STRING * pIPAddr;
 
 AdapterInfo = (IP_ADAPTER_INFO *) GlobalAlloc(GPTR,sizeof(IP_ADAPTER_INFO));
 ulOutBufLen = sizeof(IP_ADAPTER_INFO);
 
   if( ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(AdapterInfo, &ulOutBufLen)) {
      GlobalFree( AdapterInfo );
      AdapterInfo = (IP_ADAPTER_INFO *) GlobalAlloc(GPTR, ulOutBufLen );
   }
 
   if ( dwRetVal = GetAdaptersInfo( AdapterInfo, &ulOutBufLen ) ) {
    printf("Call to GetAdaptersInfo failed. Return Value: %08x\n", dwRetVal);
   }
   else {
      printf("Default gateway(s):\n" );
      printf("\t%s\n", AdapterInfo->GatewayList.IpAddress.String );
      pIPAddr = AdapterInfo->GatewayList.Next;
      while ( pIPAddr ) {
         printf( "\t%s\n", pIPAddr ->IpAddress.String );
         pIPAddr = pIPAddr ->Next;
      }
 
 
 
 
   exit( 0 );
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2012, 15:48
Помогаю со студенческими работами здесь

Не заходит на основной шлюз
После ресета модема, сменился основной шлюз (раньше был 192.168.0.50) теперь при попытке зайти на осн. шлюз вылезает такоe . Через провод...

Основной шлюз TCP/IP
Не могу пинговать основной шлюз, пишет заданная сеть недоступна! Почему может так быть? Но самое интересное что интернет есть и по сети...

Получить Основной шлюз Windows XP/7
Всем привет, надо получить &quot;Основной шлюз&quot; (как в XP так и в W7), т.е. по-умолчанию шлюз, а не шлюз конкретного сетевого адаптера. Первый...

Какой поставить основной шлюз
Есть свич и три комп. (1к,2к,3к) 1к и 2к подключены к свичу и объединены в сеть, у 2к(2 сетеые карты) есть выход в инет, у 1к основной шлюз...

Как сменить основной шлюз?
Пожалуйста подскажите как одной командой сменить основной шлюз. Например с 0.0.0.0 на 192.168.3.11. Заранее благодарен!!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru