?
Solved

MAC Addresses on Network

Posted on 2000-05-08
6
Medium Priority
?
130 Views
Last Modified: 2010-04-04
I am using both D3 and D5. I am in search of Delphi code and/or documentation that will allow me to do the following on an NT 4.x/5.x/2000 network:

From a single workstation (presumably an NT workstation but I suppose it could be a Win9X workstation) logged into this NT domain I would like to be able to be able to determine the IP address of every other workstation that is currently logged into the same domain, and (more importantly) determine the hardware MAC address of every other workstation that is currently logged into this domain.

All of the above is quite simple to do in a Novell environment but I have been searching for weeks for a way to do this on an NT network. Any help would be greatly appreciated!

Regards,

Chris

0
Comment
Question by:cdk033198
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 20

Expert Comment

by:Madshi
ID: 2789529
You should post a link to this question in the "Windows programming" forum. This sounds like a quite difficult question, so it would surely help to make the C++ guys look at this question, too.
0
 
LVL 15

Expert Comment

by:simonet
ID: 2789830
Piece of cake!

The hardest part, but still not impossible is to enumerate the MAC address. There are no remote calls that will retrieve that, so you'll have to create a "listener" for that, which will install on Windows (9x/NT/2k) as a service, so it's invisible.

The listener service works pretty much like Microsoft SMS, BackOriffice, Netbus, etc.: it's a program that listens do a specific TCP/IP port (you define what port it is), and responds to specific commands. The commands are sent out by the server machine (which contains the server app). One of the commands can be something like "#GET-MAC-ADDR@", and then the host machine reads (locally) the MAC addr and sends it over the TCP/IP port.

Enumerating the IP addresses in the local network is easier. There are functions that will let you enumerate all machines on a given LAN. YOu simply get the machine's name and convert it to its IP addr. The enumeration code can be found at http://www.delphifreestuff.com/examples/wnetexmp.html

I have some source code at home that I'll send you later on with all this I am talking about.

Yours,

Alex
0
 
LVL 15

Accepted Solution

by:
simonet earned 1200 total points
ID: 2789839
To get the IP from the enumerated machine name, use the function below:

Now, the second step is to get the IP for each machine found. For that you can use the function below, passing the name of the machine as the parameter:

uses WinSock;

function GetAddressByName(name : string) : string;
var
wsdata : TWSAData;
  he : PHostEnt;
  ss : pchar;
  ip : TInAddr;
begin
WSAStartup(MakeWord(1, 1), wsdata);
  he := gethostbyname(pchar(name));
  if he<>nil then
  begin
   ip.S_addr := integer(pointer(he^. h_addr_list^)^);
     ss := inet_ntoa(ip);
     Result := string(ss);
  end;
  WSACleanup();
end;



Alex
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:cdk033198
ID: 2844870
Comment accepted as answer
0
 

Author Comment

by:cdk033198
ID: 2844871
Thank you. Sorry for delay in closing this question.
0
 
LVL 15

Expert Comment

by:simonet
ID: 2845016
>Thank you.

Anytime, cdk! Thanks.

Alex
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Suggested Courses

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question