![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сетевые настройки [D7, WinXP]
To4kA © (2006-08-30 21:59:00)Люди добрые !!! Помогите плз... Надо в программе сделать объекты:
1) окно выбора сетевой карты
2) ввод ип адреса, для выбранной выше карты
3) кнопку вкл/выкл выбранную выше сетевую карту
Кто что знает расскажите плз незнающему...
(2006-10-03 00:45:00) [1]Удалено модератором
Observador (2006-09-09 23:59:00) [2]давненько я етим не пользовался,
но работала програмка исправно
B Win2k, 2003, Xp.
.......................
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, Winsock, IdUDPClient, IdBaseComponent,
IdComponent, IdUDPBase, IdUDPServer;
type mEntorno = class
IP : string; // IP local
HostName:string; // nombre de comp en la red
end;
type
TForm1 = class(TForm)
m1: TMemo;
......................
procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
ent := mEntorno.Create;
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
//Get the computer name
GetHostName(@s, 128);
p := GetHostByName(@s);
M1.Lines.Add('Host: '+p^.h_Name);
ent.HostName := p^.h_Name;
{Get the IpAddress}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
M1.Lines.Add('IP: '+p2);
ent.IP := p2;
end;
......................
To4kA (2006-09-04 18:07:00) [3]Большое Всем СпасиБо!!!
Очень признателен :)
Отец Кондратий (2006-09-01 10:12:00) [4]Ужо не раз отвечалось на сей вопрос. Искать тут: http://www.delphimaster.ru/cgi-bin/forum.pl?n=4(iphlpapi.dll в помощь)!
ancara (2006-08-31 12:38:00) [5]получить список интерфейсов можно средствами winsock, это просто:
сoздаем сокет s, затем для этого сокета делаем
WSAIoCtl(s, SIO_GET_INTERFACE_LIST, nil, 0, buf, ....);
buf - это указатель на область памяти, которая будет залита структурами INTERFACE_INFO.
Т.е. инфо о первом интерфейсе будет располагаться по адресу buf,
о втором - по адресу Pointer(Longint(buf)+sizeof(INTERFACE_INFO)) и т.д.
У WSAIoCtl есть параметр lpcbBytesReturned - он означает объем информации в байтах, залитых по адресу buf. Делим это кол-во на размер структуры: sizeof(INTERFACE_INFO) и получаем количество интерфесов, по которым получена информация.
Память для buf должна быть выделена заранее, если мне память не изменяеть, WSAIoCtr сама не этого не сделает.
Что содержит INTERFACE_INFO: см.MSDN
Flags(IFF_UP, IFF_BROADCAST, IFF_LOOPBACK, IFF_POINTTOPOINT, IFF_MULTICAST)
Address Address of an interface.
BroadcastAddress Broadcast address of the interface or the address of the other side for point-to-point links.
Netmask Netmask used by the interface.
Как управлять интерфесами не знаю, сам не пробовал, но подозреваю что при помощи того же WSAIoCtl, хотя...
Сергей М. (2006-08-31 09:25:00) [6]У сетевой карты нет "ип адреса".
IP-адрес (причем не обязательно один) может быть только у сетевого интерфейса, использующего на сетевом уровне IP-протокол.
Сетевой интерфейс не обязательно ассоциирован с сет.картой, это м.б. и, к примеру, модем