Нужно вывести все айдпи,хосты и мак адреса всей локальной сети.
Проблема в том что выдает такую ошибку
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Runtime.InteropServices;
using System.Threading;
using System.Net.Sockets;
using System.Globalization;
using System.IO;
namespace WpfApp
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
[DllImport("iphlpapi.dll", ExactSpelling = true)]
public static extern int SendARP(int destIp, int srcIP, byte[] macAddr, ref uint physicalAddrLen);
List<TableHost> _host = new List<TableHost>();
string hostname = "";
IPHostEntry entry;
string[] ipToString = new string[4];
public MainWindow()
{
InitializeComponent();
String host = System.Net.Dns.GetHostName();
// Получение ip-адреса.
System.Net.IPAddress ip = System.Net.Dns.GetHostByName(host).AddressList[0];
}
//System.Net.IPAddress ip = System.Net.Dns.GetHostByName(host).AddressList[0];
private void LL_Click(object sender, RoutedEventArgs e)
{
int i = int.Parse(ipToString[0]);
int j = int.Parse(ipToString[1]);
{
for (int k = 0; k < 6; k++)
{
for (int m = 0; m < 254; m++)
{
//Запускаем проверку в новом потоке
Thread _thread = new Thread(() => GetInform(string.Format("{0}.{1}.{2}.{3}", i.ToString(), j.ToString(), k.ToString(), m.ToString())));
_thread.Start();
}
}
}
}
private void GetInform(string textName)
{
string IP_Address = "";
string HostName = "";
string MacAddress = "";
try
{
//Проверяем существует ли IP
entry = Dns.GetHostEntry(textName);
foreach (IPAddress a in entry.AddressList)
{
IP_Address = a.ToString();
break;
}
//Получаем HostName
HostName = entry.HostName;
//Получаем Mac-address
IPAddress dst = IPAddress.Parse(textName);
byte[] macAddr = new byte[6];
uint macAddrLen = (uint)macAddr.Length;
if (SendARP(BitConverter.ToInt32(dst.GetAddressBytes(), 0), 0, macAddr, ref macAddrLen) != 0)
throw new InvalidOperationException("SendARP failed.");
string[] str = new string[(int)macAddrLen];
for (int i = 0; i < macAddrLen; i++)
str[i] = macAddr[i].ToString("x2");
MacAddress = string.Join(":", str);
//Далее, если всё успешно, добавляем все данные в список, после чего выводим всё в ListView
Dispatcher.Invoke(new Action(() =>
{
_host.Add(new TableHost() { ipAdress = IP_Address, nameComputer = HostName, MacAdress = MacAddress });
ListIP.ItemsSource = null;
ListIP.ItemsSource = _host;
}));
}
catch { }
}
}
class TableHost
{
public string ipAdress { get; set; }
public string nameComputer { get; set; }
public string MacAdress { get; set; }
}
}
Проект Скачать
Добавил вот такое
public MainWindow()
{
InitializeComponent();
String host = System.Net.Dns.GetHostName();
// Получение ip-адреса.
System.Net.IPAddress ip = System.Net.Dns.GetHostByName(host).AddressList[0];
ipToString = ip.ToString().Split('.');
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В базе данных (MS Access) таблица с двумя столбцами: Код и НазваниеКод на автоинкременте
У меня есть класс который работает с директориями и файламиК примеру в нем есть конструкции которые :