Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизПомогите узнать 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.192 c