Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как узнать свой IP после установления диалап-соед.


Автор: LexaK 26.12.2004, 17:20
subj?

Автор: bel_nikita 26.12.2004, 17:22
Код

#include "stdafx.h"
#include "winsock2.h"
#include "iostream.h"

#pragma comment(lib,"wsock32.lib")

void main()
{
WSADATA wsaData;
if (!WSAStartup(WINSOCK_VERSION, &wsaData))
{
 char chInfo[64];
 if (!gethostname(chInfo,sizeof(chInfo)))
 {
  cout << chInfo << endl;
  hostent *sh;
  sh=gethostbyname((char*)&chInfo);
  if (sh!=NULL)
  {
  cout << sh->h_name << endl;
  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);
  cout << inet_ntoa(adr.sin_addr) << endl;
  nAdapter++;
  }
  }
 }
 else
  cout << "Error local host " << endl;
}
else
 cout << "Winsock initial Bad !!!!" << endl;
WSACleanup();
}

Автор: LexaK 26.12.2004, 18:28
Спасибо, сейчас попробую!

Автор: Coocky 26.12.2004, 22:34
Вообще все просто,если знаешь имя компа и используешь CWinSock.Просто передаешь имя компа(его легко узнать) smile Сложнее дело с портом,тут мне подсказали, что надо набрать в командной строке cmd.Затем netstat Покажет имя ЗАНЯТЫХ портов.Исключая занятые и от 1024,до 6.... не помню,используй.

Автор: DENNN 27.12.2004, 10:52
Интересно, а что вы будете делать с этим кодом если на компьютере несколько ip? smile
В таком случае уже надо выяснять маршрут до известного хоста. Например пропарсить вывод команды route
В таком случае либо адресс будет известен из ее вывода, либо будет сделан вывод о том, что сеодинения до необходимого сетевого адреса нет.

Автор: bel_nikita 27.12.2004, 12:12
Цитата
Интересно, а что вы будете делать с этим кодом если на компьютере несколько ip?
Самое интересно, что все активные ip адреса и покажет smile

Автор: DENNN 27.12.2004, 12:16
Цитата
Самое интересно, что все активные ip адреса и покажет

А выбрать нужный через rand()? smile smile smile

Автор: Coocky 27.12.2004, 17:14
Ну смех смехом,а если серьезно?

Автор: DENNN 29.12.2004, 11:16
Цитата

tracert ya.ru

И смотри через какой первый ip пойдет. Это так, на вскидку.
Если в MSDN покапаться, то думаю можно найти, как то же самое сделать через API.
На крайний случай можно посмотреть в таблице маршрутизации маршрут по умолчанию, хотя это справедливо не для всех случаев.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)