Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 15:49   #1
stupid
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 19
Восклицание двойной ping

первый пинг сканирует диапозон и записывает в xml
Код:
static void Ping(object o)
        {
Ping pingSender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true;

            string data = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
            byte[] buffer = Encoding.ASCII.GetBytes(data);

            string begin, end;
            begin = "95.31.13.100";
            end = "95.31.13.140";

            string[] begMas = begin.Split('.');
            string[] endMas = end.Split('.');


            XmlDocument doc = new XmlDocument();
            string fileName = @"IP.xml";
            XmlTextWriter tw = new XmlTextWriter(fileName, null);

            fileName = @"default.xml";
            doc.Load(fileName);

            try
            {
                for (byte ip1 = Convert.ToByte(begMas[0]); ip1 <= Convert.ToByte(endMas[0]); ip1++)
                    for (byte ip2 = Convert.ToByte(begMas[1]); ip2 <= Convert.ToByte(endMas[1]); ip2++)
                        for (byte ip3 = Convert.ToByte(begMas[2]); ip3 <= Convert.ToByte(endMas[2]); ip3++)
                            for (byte ip4 = Convert.ToByte(begMas[3]); ip4 <= Convert.ToByte(endMas[3]); ip4++)
                            {

                                byte[] adr = new byte[] { ip1, ip2, ip3, ip4 };
                                IPAddress currentIp1 = new IPAddress(adr);
                                PingReply ping = pingSender.Send(currentIp1, 256);
                                if (ping.Status == IPStatus.Success)
                                {
                                    Console.WriteLine("Address: {0}", ping.Address.ToString());
                                    

                                    //Запись в XML
                                    XmlElement Shar = doc.CreateElement("Shar");
                                    Shar.SetAttribute("adress", ping.Address.ToString());
                                    doc.DocumentElement.AppendChild(Shar);
                                }                                                        

                            }
                tw.Formatting = Formatting.Indented;
                doc.WriteContentTo(tw);
                tw.Close();
            }
            catch { }
        }
как сделать чтобы ip записывались не только в xml-файл но и в какой нибудь список,чтобы второй ping мог сканировать этот список,пока у меня второй ping берет из xml но это не подходит
Код:
static void Ping2(object o)
        {
  Ping pingSender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true;        

            string data = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
            byte[] buffer = Encoding.ASCII.GetBytes(data);


            //-----XML--------------
            string fileName = @"IP.xml";
            XmlTextReader schit = new XmlTextReader(fileName);


            while (schit.Read())
            {
                if (schit.NodeType == XmlNodeType.Element)
                {
                    if (schit.AttributeCount > 0)
                    {
                        IPAddress currentIp1 = (IPAddress.Parse(schit.GetAttribute("adress")));
                        PingReply ping = pingSender.Send(currentIp1, 256);

                        if (ping.Status == IPStatus.Success)
                        {


                            Console.WriteLine("Address: {0}", ping.Address.ToString());
                            
                        }
                    }
                }
            }
        }
stupid вне форума Ответить с цитированием
Старый 28.03.2011, 17:32   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Глобальная переменная не подходит?
Hollander вне форума Ответить с цитированием
Старый 28.03.2011, 17:38   #3
stupid
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 19
Радость

Hollander , лучше если это будет список или массив,т.к. в дальнейшем мне надо будит часто использовать адресса от первого ping!(Программа не ограничивается только сканированием сети)
stupid вне форума Ответить с цитированием
Старый 28.03.2011, 17:47   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Ну вот

Код:
List<string> ipAdresses  = new List<string>();

static void Ping(object o)
{
...
if (ping.Status == IPStatus.Success)
{
ipAdresses.Add(ping.Address.ToString());
}
...
}

...

static void Ping2(object o)
{
foreach (string adress in ipAdresses)
{
...
}
}
Hollander вне форума Ответить с цитированием
Старый 28.03.2011, 17:51   #5
stupid
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 19
По умолчанию

Спасибо огромное))
stupid вне форума Ответить с цитированием
Старый 28.03.2011, 18:36   #6
stupid
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 19
Радость

теперь ругается что для ipAdresses.Add(ping.Address.ToString()нужен non-static, если пинги делать паблик,то ругается main(т.к. там вызывается ping и ping2)
и
Код:
 foreach (string adress in ipAdresses)
            {

                if (ping.Status == IPStatus.Success)
                {


                    Console.WriteLine("Address: {0}", ping.Address.ToString());

                }
            }
The name 'ping' does not exist in the current context
stupid вне форума Ответить с цитированием
Старый 29.03.2011, 11:08   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Потому что у тебя методы ping и ping2 - статические. Либо коллекцию делай статической (плохой вариант) либо методы не статическими (по лучше).
Hollander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ping сети Aleksandr Microsoft Office Excel 8 11.06.2012 22:35
Ping в Delphi folkk Работа с сетью в Delphi 8 24.10.2010 17:02
ping TaTT DoGG Общие вопросы .NET 2 06.10.2008 12:48
Ping Баламут Работа с сетью в Delphi 5 23.08.2007 15:17
Многопоточный Ping Квэнди Работа с сетью в Delphi 0 18.12.2006 15:01