Поиск IP-адрес MSSQL сервера по его имени
От: Аноним  
Дата: 19.04.05 12:07
Оценка:
Привет!
Собссно, есть имя (SQLSERVERTEST), есть либо компоненты ADO, либо SQLDMO. Нужен IP-адрес...

Заранее премного.
Re: Поиск IP-адрес MSSQL сервера по его имени
От: Alex.Che  
Дата: 19.04.05 12:10
Оценка:
Привет, "человек без имени"!
Вы пишешь 19 апреля 2005:

> Собссно, есть имя (SQLSERVERTEST), Нужен IP-адрес...


Зачем?
gethostbyname () смотреть.

> есть либо компоненты ADO, либо SQLDMO.


Пофиг.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[2]: Поиск IP-адрес MSSQL сервера по его имени
От: Аноним  
Дата: 19.04.05 12:29
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Привет, "человек без имени"!

AC>Вы пишешь 19 апреля 2005:

>> Собссно, есть имя (SQLSERVERTEST), Нужен IP-адрес...


AC>Зачем?

AC>gethostbyname () смотреть.

Да блин... чисто в ознакомительных целях, чтоб начальству было видно. Не мне их судить... Хотя очень хочется
Собственно, получилось вот что:


uses IdWinsock; // там определена структура hostent
h: PHostEnt;

h := gethostbyName(PChar(sServer));
ShowMessage(h.h_addr^);


И все благополучно вылетает с access violation. Чую, че-то я напортачил, а что, понять не могу.
Re[3]: Поиск IP-адрес MSSQL сервера по его имени
От: Alex.Che  
Дата: 19.04.05 12:39
Оценка:
Привет, "человек без имени"!
Вы пишешь 19 апреля 2005:

> Да блин... чисто в ознакомительных целях, чтоб начальству было видно. Не мне их судить... Хотя очень хочется

> Собственно, получилось вот что:

>
 > uses IdWinsock; // там определена структура hostent
 > h: PHostEnt;

 > h := gethostbyName(PChar(sServer));
 > ShowMessage(h.h_addr^);
 >


> И все благополучно вылетает с access violation. Чую, че-то я напортачил, а что, понять не могу.


function TCustomWinSocket.LookupName(const Name: string): TInAddr;
var
  HostEnt: PHostEnt;
  InAddr: TInAddr;
begin
  HostEnt := gethostbyname(PChar(Name));
  FillChar(InAddr, SizeOf(InAddr), 0);
  if HostEnt <> nil then
  begin
    with InAddr, HostEnt^ do
    begin
      S_un_b.s_b1 := h_addr^[0];
      S_un_b.s_b2 := h_addr^[1];
      S_un_b.s_b3 := h_addr^[2];
      S_un_b.s_b4 := h_addr^[3];
    end;
  end;
  Result := InAddr;
end;


--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[4]: Поиск IP-адрес MSSQL сервера по его имени
От: Аноним  
Дата: 19.04.05 13:02
Оценка:
Здравствуйте, Alex.Che, Вы писали:



AC>
function TCustomWinSocket.LookupName(const Name: string): TInAddr;
AC>var
AC>  HostEnt: PHostEnt;
AC>  InAddr: TInAddr;
AC>begin
AC>  HostEnt := gethostbyname(PChar(Name));
AC>  FillChar(InAddr, SizeOf(InAddr), 0);
AC>  if HostEnt <> nil then
AC>  begin
AC>    with InAddr, HostEnt^ do
AC>    begin
AC>      S_un_b.s_b1 := h_addr^[0];
AC>      S_un_b.s_b2 := h_addr^[1];
AC>      S_un_b.s_b3 := h_addr^[2];
AC>      S_un_b.s_b4 := h_addr^[3];
AC>    end;
AC>  end;
AC>  Result := InAddr;
AC>end;


Спасибо.
Но в результате HostEnt^.S_un_b.s_b1, b3, b4 = '', a b2 = 'd'. Туплю однако...
Re[5]: Поиск IP-адрес MSSQL сервера по его имени
От: Аноним  
Дата: 19.04.05 13:09
Оценка:
А>Спасибо.
А>Но в результате HostEnt^.S_un_b.s_b1, b3, b4 = '', a b2 = 'd'. Туплю однако...

Пардон. Конечно, InAddr.S_un_b.s_b1 и так далее.
Re[6]: Поиск IP-адрес MSSQL сервера по его имени
От: Alex.Che  
Дата: 19.04.05 13:33
Оценка:
Привет, "человек без имени"!
Вы пишешь 19 апреля 2005:

А>> Но в результате HostEnt^.S_un_b.s_b1, b3, b4 = '', a b2 = 'd'. Туплю однако...


> Пардон. Конечно, InAddr.S_un_b.s_b1 и так далее.


У тебя сокеты не инициализированы.
Поклади на форму компонент TClientSocket и будет тебе щастя.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[7]: Поиск IP-адрес MSSQL сервера по его имени
От: Аноним  
Дата: 19.04.05 14:05
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Привет, "человек без имени"!

AC>Вы пишешь 19 апреля 2005:

А>>> Но в результате HostEnt^.S_un_b.s_b1, b3, b4 = '', a b2 = 'd'. Туплю однако...


>> Пардон. Конечно, InAddr.S_un_b.s_b1 и так далее.


AC>У тебя сокеты не инициализированы.

AC>Поклади на форму компонент TClientSocket и будет тебе щастя.

Нашел офигительный кусочек кода. Все работает на ура


var
    WSAData : TWSAData;
    p : PHostEnt;
    Name : array [0..$FF] of Char;
begin
    Name := 'SQLSERVER';
    WSAStartup($0101, WSAData);
    p := GetHostByName(Name);
    showmessage(inet_ntoa(PInAddr(p.h_addr_list^)^));
    WSACleanup;
end;


А с твоим кодом че-то не заладилось. Но все равно спасибо за помощь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.