Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Помогите узнать IP чужой машины   Найти похожие ветки 

 
Addon ©   (2004-02-06 22:22) [0]

Мне нужно узнать адрес компьютера, который находится в моей локальной сети. Можно ли это зделать с помощью TClientSocket и TServerSocket и как. А можно ли послать текст компьютеру с определенным именем с помощью этих компонентов. Я читал, что можно послать текст по номеру сокета, но меня это не устраивает


 
Kotka ©   (2004-02-06 23:56) [1]

>можно ли послать текст компьютеру с определенным именем
да, но не факт, что будет работать

самое лучшее решение - посылать широковещательные пакеты по сети
(недавно здесь была ветка про это)


 
denkop ©   (2004-02-21 21:50) [2]

Стори сюда:

function TForm1.FillNetLevel(xxx: PNetResource; List1,List2:TStrings): Word;
Type
   PNRArr = ^TNRArr;
   TNRArr = array[0..59] of TNetResource;
Var
  x: PNRArr;
  tnr: TNetResource;
  I : integer;
  EntrReq,
  SizeReq,
  twx: THandle;
  UserName, Ip,WSName: string;
begin
    Result :=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER, xxx, twx);
    If Result = ERROR_NO_NETWORK Then Exit;
    if Result = NO_ERROR then
    begin
           New(x);
           EntrReq := 1;
           SizeReq := SizeOf(TNetResource)*59;
           while (twx <> 0) and
                 (WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
           begin
                 For i := 0 To EntrReq - 1 do
                 begin
                  Move(x^[i], tnr, SizeOf(tnr));
                  case tnr.dwDisplayType of
                   RESOURCEDISPLAYTYPE_SERVER:
                   begin
                      if tnr.lpRemoteName <> "" then
                          WSName:= tnr.lpRemoteName
                          else WSName:= tnr.lpComment;
                      UserName:=copy(WSName,3,length(WSName)-2);
                      HostToIp(UserName,IP);
                      list1.Add(UserName);
                      list2.Add(IP);
                   end;
                   else FillNetLevel(@tnr, list1, list2);
                  end;
                 end;
           end;
           Dispose(x);
           WNetCloseEnum(twx);
    end;
end;

function TForm1.HostToIP(Name: string; var Ip: string): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
StrPCopy(hostName, Name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
  if Assigned (hostEnt^.h_addr_list) then
    begin
      addr := hostEnt^.h_addr_list^;
if Assigned (addr) then
begin
IP := Format ("%d.%d.%d.%d", [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else
begin
Result := False;
end;
finally
  WSACleanup;
end
end;

FillNetLevel(nil,ListBox1.Items,ListBox2.Items)
В List1 получаешь имена всех компов в сети в List2 их ip соотв-но



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
3-1080299889
JohnS
2004-03-26 14:18
2004.04.25
MS SQL 2000 + AdoCommand + Проблема


3-1080389025
Новичек2
2004-03-27 15:03
2004.04.25
TDBAdvStringGrid и выравнивание по вертикали.


3-1080034879
TSa
2004-03-23 12:41
2004.04.25
Сохранание данных из БД ф файл


1-1081615209
hgd
2004-04-10 20:40
2004.04.25
Вопрос про StrToInt


7-1077525696
AlexPiv
2004-02-23 11:41
2004.04.25
Как в Delphi написать программу которая отловит процесс открытия