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

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

Сетевые настройки [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-протокол.

Сетевой интерфейс не обязательно ассоциирован с сет.картой, это м.б. и, к примеру, модем


Наверх

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