Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
1

Сканирование адресов в backgroundworker. Ошибка "Сервер RPC недоступен"

09.02.2014, 18:38. Показов 1412. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Извините если не так оформил название темы.
Написал код, который сканирует диапозон айпи адресов, после чего ищет в них очередь сообщений майкрософт, и вес результат показывает. Код работал, но понадобилась чтоб этот код работал в другом потоке, чтоб приложение на время не виснула. Переделал код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            //try
            {
                treeView1.Nodes.Clear();
                //Application.DoEvents();
 
                IPAddress _ipfrom = IPAddress.Parse(ipfrom.Text);
                IPAddress _ipTo = IPAddress.Parse(ipTo.Text);
                IPAddress ipScan = null;
 
                string hostname = null;
 
                int[] aa = new int[4], bb = new int[4];
 
                aa[0] = Convert.ToInt32(_ipfrom.GetAddressBytes()[0]);
                aa[1] = Convert.ToInt32(_ipfrom.GetAddressBytes()[1]);
                aa[2] = Convert.ToInt32(_ipfrom.GetAddressBytes()[2]);
                aa[3] = Convert.ToInt32(_ipfrom.GetAddressBytes()[3]);
 
                bb[0] = Convert.ToInt32(_ipTo.GetAddressBytes()[0]);
                bb[1] = Convert.ToInt32(_ipTo.GetAddressBytes()[1]);
                bb[2] = Convert.ToInt32(_ipTo.GetAddressBytes()[2]);
                bb[3] = Convert.ToInt32(_ipTo.GetAddressBytes()[3]);
 
                Ping pingSender = new Ping();
                PingOptions options = new PingOptions();
                options.DontFragment = true;
                string data = "aaaa";
                byte[] bufer = Encoding.ASCII.GetBytes(data);
                int timeout = 50;
                toolStrip1.Invoke((MethodInvoker)delegate { toolStripProgressBar1.Minimum = aa[3]; });
                toolStrip1.Invoke((MethodInvoker)delegate { toolStripProgressBar1.Maximum = bb[3]; });
               
                
 
                for (int d = aa[3]; d <= bb[3]; d++)
                {
                    ipScan = IPAddress.Parse(aa[0].ToString() + "." + aa[1].ToString() + "." + aa[2].ToString() + "." + d.ToString());
 
                    toolStrip1.Invoke((MethodInvoker) delegate { toolStripProgressBar1.Value = d;});
                    PingReply reply = pingSender.Send(ipScan, timeout, bufer, options);
 
 
 
                    
 
                    if (reply.Status == IPStatus.Success)
                    {
                       
 
 
                        hostname = GetHostName(ipScan);
                       
 
                        //----------------------------
                        treeView1.Invoke((MethodInvoker)delegate { treeView1.Nodes.Add(hostname); });
 
 
 
                    }
 
                    /*else
                    {
                        treeView1.Invoke((MethodInvoker)delegate { treeView1.Nodes.Add(ipScan.ToString() + "  false"); });
                    }*/
                    
 
                }
 
                
                TreeNodeCollection nodes = treeView1.Nodes;
 
               
                 
                foreach (TreeNode n in nodes)
                {
                    
                 
                        MessageQueueChildNode(n);
 
                    
                }
 
 
            }
            catch
            {
 
            }
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public void MessageQueueChildNode(TreeNode tn)
        {
            
            TreeNode thisnode;
 
            
            try
            {
                ConnectionOptions connection = new ConnectionOptions();
                connection.Username = "login";
                connection.Password = "password";
                connection.Authority = "ntlmdomain:domain.com";
 
                
               
                        thisnode = tn;
                        string con = String.Format("\\\\{0}\\root\\CIMV2", tn.Text );
 
                        ManagementScope manage = new ManagementScope(con, connection);
 
                        manage.Connect();
 
                        ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_PerfFormattedData_msmq_MSMQQueue");
 
                        ManagementObjectSearcher searcher =
                            new ManagementObjectSearcher(manage, query);
 
                       
 
                            foreach (ManagementObject queryObj in searcher.Get())
                            {
                                
                                thisnode.Nodes.Add(queryObj["Name"].ToString());
                                
                                
 
 
                            }
                        
                    
               
 
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            
        }
первая часть кода работает, список машин добавляет в treeview, но вторая часть (MessageQueueChildNode), та которая отвечает за очередь сообщений не работает. Что посоветуйте?

Добавлено через 11 минут
Сообщение ошибки:сервер RPC недоступен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2014, 18:38
Ответы с готовыми решениями:

Ошибка "Сервер RPC недоступен" при повторном обращении к Word
Добрый день! Вывожу на печать с формы в документ Word. Все получается. Но при закрытии и при...

При создании нескольких word-файлов вылетает ошибка-сервер RPC недоступен!?
В программе создаю последовательно сначала один документ и вывожу его в формате ворд, далее пытаюсь...

Сканирование списка IP-адресов в BackgroundWorker
Перепробовал кучу примеров, ни один не работает. Что требуется: простенькая задачка - в...

Canon LBP-2900 ошибка "Сервер RPC недоступен"
Здравствуйте! установили дрова.-работает.на следующий день-не работает.-снесла дрова и заново...

Работа с Excel и ошибка "Сервер RPC недоступен"
Доброго времени суток. Делаю следующее: При загрузке формы подключаю книгу EXCEL, вывожу данные...

8
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
09.02.2014, 19:22  [ТС] 2
Сканирование адресов в backgroundworker. Ошибка "Сервер RPC недоступен"
0
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
10.02.2014, 22:54  [ТС] 3
никаких идей нет ??
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
11.02.2014, 06:30 4
Лучший ответ Сообщение было отмечено frech как решение

Решение

Цитата Сообщение от frech Посмотреть сообщение
никаких идей нет ??
Мда ...
C#
1
treeView1.Invoke((MethodInvoker)delegate { treeView1.Nodes.Add(hostname); });
C#
1
thisnode.Nodes.Add(queryObj["Name"].ToString());
Почему в первом случае вы осуществляете добавление данных через Invoke, а во втором напрямую?
0
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
11.02.2014, 17:38  [ТС] 5
Цитата Сообщение от kodv Посмотреть сообщение
Мда ...
C#
1
treeView1.Invoke((MethodInvoker)delegate { treeView1.Nodes.Add(hostname); });
C#
1
thisnode.Nodes.Add(queryObj["Name"].ToString());
Почему в первом случае вы осуществляете добавление данных через Invoke, а во втором напрямую?
Я так пробовал. Программа запускается, никаких ошибок не показывает. Имена машин добавляется, но очередь сообщений нет. Но как не странно никаких ошибок нет.
Для проверки очереда сообщений, я добавил листбокс, и выше указанным методом копию данных добавлял туда. С листбокс это прокатило, но с treeview нет
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
11.02.2014, 18:13 6
Цитата Сообщение от frech
Я так пробовал
Как так? Я вам ни чего не советовал, я лишь спросил, почему вы сделали именно так ... По идее, во втором, обозначенном мною случае, нужно тоже через Invoke делать. И ругается, скорее всего, программа именно из-за этого. А если ругань происходит в другом месте, то хоть обозначьте где. Экстрсенсы асе на битве.
0
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
11.02.2014, 19:17  [ТС] 7
Тот вариант, который вы предложили, я пробовал. Там никакой ошибки не прказывает. Но результат не тот. Childnode не добавляется
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
12.02.2014, 16:07 8
Очередь получается с помощью wmi?
При этом для некоторых машин работает, а для некоторых нет?

Возможно кое-где файрвол блочит, например.
0
36 / 36 / 3
Регистрация: 17.07.2008
Сообщений: 581
13.02.2014, 22:16  [ТС] 9
извините меня, прошу камнями не кидаться. На самом компе была проблема, вот поэтому прога корректно не работало. Все прошло на ура, как хотел. Как тут советовали, надо использовать делегаты.
0
13.02.2014, 22:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2014, 22:16
Помогаю со студенческими работами здесь

RPC сервер недоступен
RPC сервер недоступен. Ошибка 0x800706ba Доброго времени суток. Столкнулся с такой проблемой. На...

Сервер RPC недоступен
есть 2 сайта. в первом - 3 контроллера (DC1, DC2, DC3). во втором - 1 контроллер дочернего домена...

Сервер RPC недоступен
Проблема стала возникать не так давно, стихийное проявление. при попытки подключения к...

Сервер RPC недоступен
Windows выдает ошибки. Сам не знаю в чем дело. Возможно система пострадала от вирусов.

Сервер RPC недоступен
не могу создать документ word после создания предыдущего! после выхода и обратного входа в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru