PDA

View Full Version : مبتدی: پیدا کردن نام کامپیوترهای موجود در شبکه



HBI123
شنبه 04 مهر 1394, 20:26 عصر
سلام
ببخشیدمیخواستم بدون چطوری می شود نام کامپوترهای موجود در شبکه را پیدا کرد ؟

Felony
شنبه 04 مهر 1394, 20:53 عصر
اینو قبلا نوشته بودم :

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;

namespace Sample
{
internal class WorkgroupSearcher
{
private bool _isStoped;
public event Action<KeyValuePair<string, string>> OnNewComputer;

public void Start(string startRange, string endRange)
{
int lastF = startRange.LastIndexOf(".", StringComparison.Ordinal);
int lastT = endRange.LastIndexOf(".", StringComparison.Ordinal);
string from = startRange.Substring(lastF + 1);
string to = endRange.Substring(lastT + 1);

for (int i = int.Parse(from); i <= int.Parse(to); i++)
{
if (_isStoped)
return;

string address = string.Format("{0}{1}", endRange.Substring(0, lastT + 1), i);
Task.Factory.StartNew(() => GetIpInformation(address));
}
}

public void Stop()
{
_isStoped = true;
}

private void GetIpInformation(string ipAddress)
{
try
{
IPHostEntry he = Dns.GetHostByAddress(ipAddress);

if (OnNewComputer != null)
OnNewComputer(new KeyValuePair<string, string>(ipAddress, he.HostName));
}
catch (SocketException ex)
{
}
}
}
}


استفاده :

private void Form1_Load(object sender, EventArgs e)
{
var workGroup = new WorkgroupSearcher();
workGroup.OnNewComputer += NewComputerFound;
workGroup.Start("192.168.1.1", "192.168.1.255");
}

public void NewComputerFound(KeyValuePair<string, string> keyValuePair)
{
MessageBox.Show(keyValuePair.Key + " " + keyValuePair.Value);
}