Сканер портов. Неправильный формат IP-адреса - C#
Формулировка задачи:
Пишу я сканер портов, нашла в инете кучу копий одного и того же кода для windows form application...
Хочу сканер асинхронный, и нужно консольный. Попробовала подогнать код, но что то пошло не так..
В 50-й строке выдает эксепшн - мол, не тот формат адреса. погуглила. если не ошибаюсь, в этом месте метод вместо
hostName
ждет строку вида"176.15.146.56"
. пыталась много чего туда запихнуть, например, pingReply.Address и кучу вариаций... не выходит. подскажите, в чем косяк?using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Net.NetworkInformation; namespace NmapSharp { class Program { static void Main(string[] args) { foreach (string hostName in args) Scan(hostName); } public static void Scan(string hostName) { Console.WriteLine(String.Format("Название хоста: {0}", hostName)); IPHostEntry myHost = Dns.GetHostEntry(hostName); Ping ping = new Ping(); PingReply pingReply = ping.Send(hostName); try { Console.WriteLine("Время ответа: {0}", pingReply.RoundtripTime); Console.WriteLine("Cтатус: {0}", pingReply.Status); Console.WriteLine("IP: {0}", pingReply.Address); Console.WriteLine(); } catch (PingException e) { Console.WriteLine(e.Message); } Console.WriteLine("Enter start port"); int startPort = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter end port"); int endPort = Convert.ToInt32(Console.ReadLine()); IPAddress ipAddr = IPAddress.Parse(hostName); for (int i = startPort; i <= endPort; i++) { //Создаем сокет IPEndPoint ipEndP = new IPEndPoint(ipAddr, i); Socket mySoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //Пробуем подключится к указанному хосту IAsyncResult asyncResult = mySoc.BeginConnect(ipEndP, new AsyncCallback(ConnectCallback), mySoc); if (!asyncResult.AsyncWaitHandle.WaitOne(30, false)) { mySoc.Close(); Console.WriteLine("Порт {0} закрыт", i.ToString()); } else { mySoc.Close(); Console.WriteLine("Порт {0} открыт", i.ToString()); } } } private static void ConnectCallback(IAsyncResult ar) { try { Socket client = (Socket)ar.AsyncState; client.EndConnect(ar); //connectDone.Set(); } catch (Exception e) { } } } }
Решение задачи: «Сканер портов. Неправильный формат IP-адреса»
textual
Листинг программы
string host1 = Convert.ToString(pingReply.Address); IPAddress ipAddr = IPAddress.Parse(host1);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д