Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить IP-адреса компьютера 
V
    Опции темы
DENSHER
Дата 6.10.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Все доброго времени суток. Народ нужна ваша помощь как всегда.

Хочу сделать вывод в ListView1 список IP-адресов. Чтобы не путать никого , я хочу чтобы выводился список IP только того компьютера на котором запущен проект.

А теперь о сути проблемы -

Я сделал вывод IP-адресов но V.B. Студия начала ругаться на то что GetHostByName устарел и нужно его заменить на GetHostEntry. Я все сделал и ругаться он перестал но теперь , мне выводит лишних три строчки которые мне ненужно чтобы отображались. Вот код:
Код

Public Class Form1
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ListView1.Items.Clear()
        Dim Host As String = System.Net.Dns.GetHostName
        Dim IP As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(Host)
        For Each myIP As System.Net.IPAddress In IP.AddressList
            Dim colIps As ListViewItem = ListView1.Items.Add("0") ' Не знаю как вывести нумерацию строчек.
            colIps.SubItems.Add(myIP.ToString)
        Next
    End Sub

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, _ 
ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        Dim I As Integer
        For I = 0 To ListView1.SelectedItems.Count - 1
            TextBox1.Text = ListView1.SelectedItems(0).SubItems(1).Text
        Next
    End Sub
End Class

На всякий случай прикрепил проект к посту.
Ой чуть не забыл о маленькой но важной для меня еще мини-проблеме. Я еще не смог сделать вывод нумерации строчек в ListView1(ListView1.Items.Add("0")'Не знаю как вывести нумерацию строчек"). Подскажите как?

Спасибо за внимание рассчитываю на вашу помощь.


Это сообщение отредактировал(а) DENSHER - 7.11.2010, 08:12

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  WindowsApplication1.rar 65,18 Kb
PM MAIL   Вверх
Heinzz
Дата 9.10.2010, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



внешний IPадрес
Код

WebRequest request = WebRequest.Create(@"http://whatismyip.com/automation/n09230945.asp");
            WebResponse response = request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            Console.WriteLine(sr.ReadToEnd());



--------------------
user posted image
PM MAIL   Вверх
Pilger
Дата 9.10.2010, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Цитата
Мне выводит лишних три строчки которые мне ненужно чтобы отображались. 

Отображай только то, что надо.

Цитата
Я еще не смог сделать вывод нумерации строчек в ListView1(ListView1.Items.Add("0")

Добавь переменную Integer и увеличивай каждый раз на 1.

Это сообщение отредактировал(а) Pilger - 9.10.2010, 02:03


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
Heinzz
Дата 9.10.2010, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



чтобы сделать нумерацию строчек можно используя вид View.Details сделать первую колонку с номерами.


--------------------
user posted image
PM MAIL   Вверх
Heinzz
Дата 9.10.2010, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



Код

 class MyListView : ListView
    {
        public MyListView()
        {
            this.View = View.Details;
            this.Columns.Add("ID");
            this.Columns.Add("Name");
            this.Columns.Add("Age");
            this.Columns.Add("Occupation");
            this.FullRowSelect = true;
        }
        public void AddPerson(Person p)
        {
            ListViewItem item = new ListViewItem(new string[] { this.Items.Count.ToString(), p.Name, p.Age.ToString(), p.Occupation });
            this.Items.Add(item);
        }

    }


    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Occupation { get; set; }
        public Person(string name, int age, string occupation)
        {
            this.Name = name;
            this.Age = age;
            this.Occupation = occupation;
        }
    }



--------------------
user posted image
PM MAIL   Вверх
DENSHER
Дата 9.10.2010, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Heinzz, я хочу получить не только статический (внешний) адрес но и локальный тоже.
Извиняюсь за дотошность , но с ListView1 я пока не очень дружу. Можно сделать пример именно по моему коду , а точнее по моему прикрепленному проекту.

Для более точно картины вот что мне выдавало при использование GetHostByName в ListView1:
1)85.29.158.67 (статический (внешний) адрес)
2)10.119.271.234 (локальный)

а вот что выдает при использование GetHostEntry:
1)fe84::f6:1с6a:aaea:58c4%14
2)2003:5617:a74c::5245:a73d
3)85.29.158.67 (статический (внешний) адрес)
4)10.119.271.234 (локальный)
5)2002:0:5ed6:84fd:f7:1d7a:aaea:59c4

Цитата(Pilger @  9.10.2010,  02:03 Найти цитируемый пост)
Добавь переменную Integer и увеличивай каждый раз на 1.

Можешь по моему прикрепленному проекту сделать пример , если не сложно.


Это сообщение отредактировал(а) DENSHER - 9.10.2010, 03:10
PM MAIL   Вверх
Pilger
Дата 9.10.2010, 04:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Цитата
Heinzz, я хочу получить не только статический (внешний) адрес но и локальный тоже.

Не каждый напрямую связан с интернетом. Например мой компьютер моего внешнего ай пи не знает, ибо я через рутер сижу.
Цитата
а вот что выдает при использование GetHostEntry

Ты можешь вытащить из IP.AddressList любое значение.
Код

IP.AddressList(0)

А если уж очень хочется, то и GetHostByName никто использовать не запрещает.
Цитата
Можешь по моему прикрепленному проекту сделать пример , если не сложно.

Объявляешь новую переменную Integer перед циклом. И в цикле увеличиваешь значение на 1. "0" меняешь на переменную.


Это сообщение отредактировал(а) Pilger - 9.10.2010, 04:32


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
DENSHER
Дата 9.10.2010, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Pilger , переменную я объявил но никак не могу в цикле увеличить значение на один. Уж прости за назойливость , но чего-то с этим ListView у меня не вяжется. Хотя до этого решал куда серьезнее проблемы , а здесь с нумерацией в тупике ( жесть.

Вот цикл:
Код

Dim num As Integer
        For Each myIP As System.Net.IPAddress In IP.AddressList
            Dim colIps As ListViewItem = ListView1.Items.Add(num) ' Не знаю как вывести нумерацию строчек.
            colIps.SubItems.Add(myIP.ToString)
        Next

Переменная объявлена , но как в цикле увеличиваешь значение на 1?
PM MAIL   Вверх
Pilger
Дата 9.10.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Код

num += 1

А можно просто ListView1.Items.Сount.

Это сообщение отредактировал(а) Pilger - 9.10.2010, 15:40


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
Heinzz
Дата 9.10.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



Только count никаких циклов не надо.
Очень удобно унаследоваться от оригинального ListView и расширить функционал методами добавления, удаления, редактирования записи и сортировки (см. пример выше).
Еще важный момент использовать рефлексию для автоматического считывания названий свойств отображаемых объектов. Ну это чтобы получившийся  контрол был универсальным, вдруг через какое-то время решите поля поменять


--------------------
user posted image
PM MAIL   Вверх
Pilger
Дата 9.10.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Цитата
Очень удобно унаследоваться от оригинального ListView и расширить функционал методами добавления, удаления, редактирования записи и сортировки (см. пример выше).

Вряд ли он это умеет^^.
Цитата
Можно сделать пример именно по моему коду , а точнее по моему прикрепленному проекту.



--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
DENSHER
Дата 10.10.2010, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(Pilger @  9.10.2010,  23:02 Найти цитируемый пост)
Вряд ли он это умеет^^.

Да , этого я точно не умею! Опять хочу вернуться к своим баранам. Чего-то у меня не получается не как сделать нумерацию. Это жесть какая-та ((
Pilger , сделай пожалуйста пример кодом. Поскольку я видно еще настолько новичок в этом , что не могу никак это сделать сам. Читал , читал... но так чего-то и не понял... (


Это сообщение отредактировал(а) DENSHER - 10.10.2010, 02:47
PM MAIL   Вверх
Pilger
Дата 10.10.2010, 04:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Программа выполняет код в цикле n'ное количество раз. В твоем случае в зависимости от количества элементов в AddressList. То есть для каждого элемента она один раз проходит через цикл. Логично, что если ты объявишь переменную до цикла:
Код
Dim num As Integer = 0

, а в конце каждого прохода через цикл будешь увеличивать значение на один больше:
Код
num = num + 1

, то на момент каждого захода в цикл твоя переменная будет на один больше, чем в предыдущем заходе. И соответственно на момент добавления в ListView1 она будет на один больше, чем при предыдущем добавлении. И теперь можно чисто логически понять, куда это значение стоит всунуть.

Еще есть другой путь. У ListView1.Items есть свойство Count, которое возвращает текущее количество строк в ListView. То есть если ты напишешь:
Код
ListView1.Items.Count

,то ты узнаешь, сколько там строк. Зная количество строк думаю ты сразу сообразишь, какой номер будет у следующей строки. И точно так же чисто логически сообразишь, куда его всунуть.
Код
Pilger , сделай пожалуйста пример кодом.

Почему я тебе не даю сразу готовое решение. Потому что если ты не будешь в состоянии решить подобную простую задачу любым доступным методом сам, то у тебя будут возникать проблемы на протяжении всего времени, а это тяжко. Если ты все таки не понял, то говори.

Это сообщение отредактировал(а) Pilger - 10.10.2010, 04:10


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
DENSHER
Дата 10.10.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Pilger , видно все же я не понимаю что-то или что-то не правильно делаю. Возможно я уперся в неправильно направлении. Поскольку я все что не пытался сделать у меня в колонке номера получается: либо 0 , либо пишет False.
Спасибо тебе огромно за посты разъяснения , но видно что-то недопонимаю я.
PM MAIL   Вверх
Pilger
Дата 10.10.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Код

         For Each myIP As IPAddress In IP.AddressList
            ListView1.Items.Add(New ListViewItem({ListView1.Items.Count, myIP.ToString}))
        Next


Код

        Dim AdressList As IPAddress() = IP.AddressList
        For i As Integer = 0 To AdressList.Count - 1
            ListView1.Items.Add(New ListViewItem({i, AdressList(i).ToString}))
        Next


Код

        Dim num As Integer = 0
        For Each myIP As IPAddress In IP.AddressList
            ListView1.Items.Add(New ListViewItem({num, myIP.ToString}))
            num += 1
        Next


Или как ты делал
Код

        For Each myIP As System.Net.IPAddress In IP.AddressList
            Dim colIps As ListViewItem = ListView1.Items.Add(...) ' ListView1.Items.Count или Num
            colIps.SubItems.Add(myIP.ToString)
        Next



--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1045 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.