Here is an article by Sacha Barber that has a working link:Retreiving a list of network computer names using C#
Basically, if you want to roll your own, I would recommend you first find your network IP address and Subnet. This will tell you what possible IP addresses other devices on the network have. Then you can ping each one to determine if they respond. On those that ping, do a WMI call to ask what their name is. If they respond, record that information. You now have a rudimentary network scanner.