.NET 4.x Поиск сервера в локальной сети - C#
Формулировка задачи:
Добрый день!
В локальной сети есть асинхронный сервер на сокетах. В этой же локальной сети есть программы-клиенты, которые должны взаимодействовать с сервером.
Порт сервера (который он слушает) известен заранее.
Вопрос:
как найти сервер?
Компов в сети 10. На 9-ти будут клиенты, на 1 сервер. Заранее спасибо!
По мотивам вот этого (Проверка, работает ли сервер), создал вот такую функцию... но работает, блин, медленно.
При этом непонятно, как всё-таки проверить - сидит ли сервер на конкретном порте.
public List<string> FindServer(string началоАдресаСети, int старт)
{
List<string> списокУстройствВСети = new List<string>();
Ping pingsender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
byte[] buffer = Encoding.ASCII.GetBytes("test_ping");
int i = 0;
for (i = старт; i < 255; i++)
{
IPAddress adress = IPAddress.Parse(началоАдресаСети + "." + i);
PingReply reply = pingsender.Send(adress, 10, buffer, options);
if (reply != null && reply.Status == IPStatus.Success) { списокУстройствВСети.Add(началоАдресаСети + "." + i); }
}
return списокУстройствВСети;
}Решение задачи: «.NET 4.x Поиск сервера в локальной сети»
textual
Листинг программы
IPAddress[] ips = Dns.GetHostAddresses(имяКомпьютераСервера); // выясняем все ip-адреса foreach (IPAddress ipAddress in ips) if (ipAddress.AddressFamily == AddressFamily.InterNetwork) ипСервера = ipAddress; // находим только ip4