|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] TimeOut для удаленного соединения по WMI на C# |
|
|
.NET - [решено] TimeOut для удаленного соединения по WMI на C#
|
|
Ветеран Сообщения: 5624 |
Пишу небольшое приложение, использующее WMI для сбора данных с удаленных машин. Все работает, за исключением одного: В случае, если компьютер выключен/на нем нет WMI/другая причина недоступности, то соединение происходит очень долгое время.
Все попытки уменьшить таймаут для попытки соединения ни к чему не приводили. Вот как пытался: ConnectionOptions connOptions = new ConnectionOptions();
ObjectGetOptions getOptions = new ObjectGetOptions();
getOptions.Timeout = new System.TimeSpan(0, 0, 2); //2 секунды
//ManagementScope machineScope = new ManagementScope(machineWmiNamespace, connOptions);
//scope.Options.Timeout = New TimeSpan(20000000) //другим способом 2 секунды
scope = new ManagementScope(pcstr, connOptions);
scope.Options.Timeout = new TimeSpan(0, 0, 0); // и даже 0 секунд
scope.Connect();
Цитата:
ПРобовал использовать PING, ответ получаю, проанализировать могу, но все равно очень долго. Есть ли какой нибудь способ указания таймаута при коннекте WMI на удаленную машину? |
||
|
------- Отправлено: 04:58, 27-10-2008 |
|
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Решил проблему, не в том направлении копал просто. Проще всего не через WMI, а, действительно через ping проверять доступность машины. Ниже приведен небольшой классик, который в течении 2-3 секунд дает ответ, есть пинг или нет. Если есть, результат мгновенно приходит. Если машина недоступна, то ответ приходит через пару секунд:
class QueryData
{
public bool HasPower(string who)
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 10;
PingReply reply;
try
{
reply = pingSender.Send(who, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}
}
|
|
------- Отправлено: 04:37, 28-10-2008 | #2 |
|
Пользователь Сообщения: 129
|
Профиль | Отправить PM | Цитировать Если кого заинтересует ping средствами JScript:
на MSDN можно более подробно рассмотреть Win32_PingStatus |
|
Последний раз редактировалось menpavel, 08-06-2010 в 12:38. Причина: обшипся Отправлено: 12:36, 08-06-2010 | #3 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] Помогите найти скрипт для удаленного удаления програм | magwolf | Скриптовые языки администрирования Windows | 20 | 01-02-2016 23:35 | |
| Ошибка - [решено] WMI namespace | Cr00t | Microsoft Windows 2000/XP | 1 | 18-08-2009 13:26 | |
| Службы - [решено] Необходимый минимум для нормального соединения по оптоволокну(fiber) | Letik | Microsoft Windows 2000/XP | 2 | 09-01-2009 16:26 | |
| DFS => Timeout после закрытия файла? | uptk | Microsoft Windows NT/2000/2003 | 0 | 07-11-2008 17:05 | |
| Ошибка - [решено] 1(Одна ошибка WMI) | mikola1983 | Microsoft Windows 2000/XP | 2 | 21-09-2007 14:36 | |
|