Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

определитель IP адресов

14K
26 мая 2007 года
Baxtiyor
28 / / 23.02.2007
дорогие программисти помогите пожалуйста! у меня задача такая! определит сколько компов в локалном сети и их IP адресов. и на на dial-up тоже определит соединенным с моим компом ip адресов. за ранее спосибо
713
26 мая 2007 года
Ap0k
360 / / 13.03.2006
Какая конкретно задача стоит? А то пахнет тухлой архитектурой, либо кул-хацкерством.
14K
27 мая 2007 года
Baxtiyor
28 / / 23.02.2007
основная задача: определить сколько компьютеров в локалном сети, и их айпи адресов.
5.1K
27 мая 2007 года
freestyler
102 / / 23.02.2007
Может этот код не претендует на оптимальность и быстроту но он рабочий. Думаю идею ты понял.
Код:
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Management;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.NetworkInformation;
using System.Threading;


namespace WindowsApplication1
{
    public partial class MyForm : Form
    {
        public MyForm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String myHost = Dns.GetHostName();
            //String myHost = "www.yandex.ru";
            //IPAddress ip_serv = new IPAddress(192.168.1.100);
            //IPHostEntry myHostEntry = Dns.GetHostByAddress("192.168.1.100");
            IPHostEntry myHostEntry = Dns.GetHostByName(myHost);
            IPAddress[] IPList = myHostEntry.AddressList;
            /*foreach (IPAddress ip in IPList)
            {
                listBox1.Items.Add(ip.ToString());
            }*/
            //listBox1.Items.Add(myHost);
            IPAddress first=GetFirst(IPList[0]);
            listBox1.Items.Add(first);
            listBox1.Items.Add(GetNext(first));
            /*if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");*/
            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;
            options.Ttl = 128;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 500;
            int count = -1;
            //IPAddress c = first;
            int N=200;
            IPAddress c = GetIpByPossition(N,first);
            for (int i = N; i <255 ; i++)
            {
               
                PingReply reply = pingSender.Send(c.ToString(), timeout, buffer, options);
                if (reply.Status == IPStatus.Success)
                {
                    listBox1.Items.Add("Address: " + reply.Address.ToString());
                    count++;
                    //listBox1.Items.Add("RoundTrip time: " + reply);
                    //listBox1.Items.Add("Time to live: " + reply.Options.Ttl);
                    //listBox1.Items.Add("Don't fragment: " + reply.Options.DontFragment);
                    //listBox1.Items.Add("Buffer size: " + reply.Buffer.Length);
                }
                c=GetNext(c);

            }
            listBox1.Items.Add(count);
           

        }
        private IPAddress GetFirst(IPAddress myIP)
        {
            String IP = myIP.ToString();
            String nIP = IP.Remove(IP.Length-3);
            nIP += "1";

            return IPAddress.Parse(nIP);
        }
        private IPAddress GetNext(IPAddress myIP)
        {
            String IP = myIP.ToString();
            String temp=null;
            int i=IP.Length-1;
            int count = 0;
            while ( IP!='.')
            {
                temp += IP;
                i--;
                count++;
            }
            String temp1 = null;
            for (int k = 0; k < temp.Length; k++)
            {
                temp1+=temp[temp.Length - k - 1];
            }
            int ad = Convert.ToInt32(temp1);
            ad++;
            if (ad >= 1 && ad <= 254)
            {
                String nIP = IP.Remove(i+1);
                nIP += ad.ToString();
                return IPAddress.Parse(nIP);
            }
            return IPAddress.Parse(temp);
        }
        private IPAddress GetIpByPossition(int n,IPAddress myIP)
        {
            String IP = myIP.ToString();
            String temp = null;
            int i = IP.Length - 1;
            int count = 0;
            while (IP != '.')
            {
                //temp += IP;
                i--;
                count++;
            }
            //int ad = Convert.ToInt32(temp);
            //ad++;
            if (n >= 1 && n <= 254)
            {
                String nIP = IP.Remove(i + 1);
                nIP += n.ToString();
                return IPAddress.Parse(nIP);
            }
            return IPAddress.Parse(temp);
        }
    }
}
5.1K
27 мая 2007 года
freestyler
102 / / 23.02.2007
Извини, но код без комментариев.Работа с классом Ping содрана из MSDN. Ну остальное это получение следующего адреса, адреса по позиции и т.д. Придумаешь лучши пиши - посмотрим.
14K
28 мая 2007 года
Baxtiyor
28 / / 23.02.2007
спосибо freestyler...я попробую потом сообшу результат и мнение
713
28 мая 2007 года
Ap0k
360 / / 13.03.2006
Безошибочного и 100%-верного способа решения данной задачи - нет, увы.
5.1K
28 мая 2007 года
freestyler
102 / / 23.02.2007
Ну я и говорю, что он не претендует на оптимальность. Там можно дорабатывать очень много, ну не приводить же теперь
примеры коммерческого качества.
11K
06 июня 2007 года
Sergei_
54 / / 20.02.2007
Можешь скачать и глянуть следующие проекты:
http://www.codeproject.com/cs/internet/host_info_within_network.asp
Там правда если IP существует,но невозможно определить MAC выкидывает MessageBox, это место можно закоментить(чтоб не раздрожало) и будет работать 100%
http://www.codeproject.com/cs/internet/ListNetworkComputers.asp
Здесь еще один пример, возможно немного сложнее (там вроде с импортом функций)
Вобщем если немного разберешься думаю поможет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог