Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать имя компьютера?


GenBr ©   (2002-02-14 16:37:00) 

Я создаю распределенное приложение при помощи Corba Data Module & TCorbaConnection
Можно ли узнать на сервере имя компьютера -- инициатора соединения?
Заранее благодарю. Геннадий


Олег Лаукарт   (2002-02-27 13:44:00) [1]

Я для решения задачи мониторинга кто откуда работает пользуюсь такой функцией:
uses IdIPWatch;
function GetLocalIP :string;
begin
   with TIdIPWatch.Create(Application) do try
       HistoryEnabled := false;//чтобы не создавать файл...
       Result := LocalIP;
   finally Free; end;
end;

Помоемому короче и проще, по крайней мере я не сталкивался с проблемами. Вопрос в другом. В таком подходе есть большаяпроблема если точность определение ip нам критична - например для безопасности. Все отдано на откуп клиента, а кто гарантирует адекватность переданного им адреса? :(
Corba  работает поверх TCP/IP (IIOP), тоесть в любом случае, на низком уровне всегда есть информация про адрес отправителя. Странно, что в корбе, насколько я знаю напрочь отсутствует доступ к такой информации. Понять почему это так не сложно - задача Корбы - предоставить "конструктор", но смириться иногда сложно.
Вопрос актуальный и хотелось бы услышать кто знает другие, более надежные решения, кроме предложенных. (в частности для VisiBroker, Delphi)


nikols   (2002-02-16 08:59:00) [2]

Функция для определения IP и имени компьютера:
(нашел на сайте "Мастера Delphi")

Oleg Gashev ©   (08.12.01 22:21)
function GetIP:string;
var WSAData : TWSAData;
  p:PHostEnt;
  Name:array [0..$FF] of Char;
  err:integer;
begin
try
  err:=WSAStartup($0101, WSAData);
  if (err=0) then begin
   GetHostName(name, $FF);
   p := GetHostByName(Name);
   result:=inet_ntoa(PInAddr(p.h_addr_list^)^)+' ['+strpas(name)+']';
   WSACleanup;
  end else result:='No Networking';
except
result:='No IP?!';
WSACleanup;
end;
end;

Не забудь подключить модуль winsock.

Клиент определяет имя компьютера и передает параметром метода строку (либо еще как) серверу.



Наверх

Титульная страница Поиск, карта сайта Написать письмо