![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
|