Ping сервера из своего приложения - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Приветствую. Помогите пожалуйста кто может. Делаю программулю на ней уже есть список консольных команд , узнать ip сайта , добавить сайт в hosts файл (делаю эту программу для того чтобы упростить жизнь так как занимаюсь ремонтом ПК и часто бывает что приходиться сталкиваться с консолью win). Вот вид программы: Вопрос: Как добавить на форму консоль? Или как при нажатии кнопки в label1 появлялась информация как при помощи команды в cmd - ping (адрес или ip) . Пишу в Visual Studio 2013 - VB. Заранее спасибо.

Решение задачи: «Ping сервера из своего приложения»

textual
Листинг программы
  1. Imports System.Net
  2. Imports System.Net.NetworkInformation
  3. Imports System.Threading
  4. Imports System.Threading.Tasks
  5.  
  6. Class Pinger
  7.  
  8.     Private _numRequests As Integer
  9.     Private _timeout As Integer
  10.     Private _pingTask As Task
  11.     Private _scheduler As TaskScheduler
  12.     Private _hostNameOrAddress As String
  13.  
  14.     Public Event ReplyReceived As EventHandler(Of PingReplyEventArgs)
  15.  
  16.     Public Sub New(numRequests As Integer)
  17.         Me.New(numRequests, 4000)
  18.     End Sub
  19.  
  20.     Public Sub New(numRequests As Integer, timeout As Integer)
  21.  
  22.         If numRequests < 1 Then Throw New ArgumentOutOfRangeException("numRequests", "Attempts value must be greater than zero")
  23.         _numRequests = numRequests
  24.  
  25.         _timeout = timeout
  26.  
  27.     End Sub
  28.  
  29.     Public Sub BeginSend(hostNameOrAddress As String)
  30.  
  31.         If _pingTask IsNot Nothing AndAlso Not _pingTask.IsCompleted Then
  32.             Throw New InvalidOperationException("Ping is already in progress")
  33.         End If
  34.  
  35.         _hostNameOrAddress = hostNameOrAddress
  36.         _scheduler = TaskScheduler.FromCurrentSynchronizationContext()
  37.         _pingTask = Task.Factory.StartNew(AddressOf DoPing, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default)
  38.  
  39.     End Sub
  40.  
  41.     Private Sub DoPing()
  42.  
  43.         Dim pingData() As Byte
  44.         ReDim pingData(31)
  45.         For I = 0 To pingData.Length - 1
  46.             pingData(I) = CByte(97 + I Mod 30)
  47.         Next
  48.  
  49.         Using ping As New Ping()
  50.  
  51.             For I = 0 To _numRequests - 1
  52.  
  53.                 If I > 0 Then Thread.Sleep(900)
  54.  
  55.                 Dim reply As PingReply = Nothing
  56.                 Try
  57.                     reply = ping.Send(_hostNameOrAddress, _timeout, pingData)
  58.                 Catch ex As PingException
  59.                 End Try
  60.  
  61.                 Task.Factory.StartNew( _
  62.                     Sub(state) RaiseEvent ReplyReceived(Me, New PingReplyEventArgs(DirectCast(state, PingReply))), _
  63.                     reply, _
  64.                     CancellationToken.None, TaskCreationOptions.None, _
  65.                     _scheduler _
  66.                 ).Wait()
  67.  
  68.             Next
  69.  
  70.         End Using
  71.  
  72.     End Sub
  73.  
  74. End Class
  75.  
  76. Public Class PingReplyEventArgs
  77.     Inherits EventArgs
  78.  
  79.     Private _status As IPStatus
  80.     Private _address As IPAddress
  81.     Private _roundtripMilliseconds As Long
  82.     Private _ttl As Integer
  83.  
  84.     Public ReadOnly Property IsSuccess As Boolean
  85.         Get
  86.             Return _status = IPStatus.Success
  87.         End Get
  88.     End Property
  89.  
  90.     Public ReadOnly Property Status As IPStatus
  91.         Get
  92.             Return _status
  93.         End Get
  94.     End Property
  95.  
  96.     Public ReadOnly Property Address As IPAddress
  97.         Get
  98.             Return _address
  99.         End Get
  100.     End Property
  101.  
  102.     Public ReadOnly Property RoundtripMilliseconds As Long
  103.         Get
  104.             Return _roundtripMilliseconds
  105.         End Get
  106.     End Property
  107.  
  108.     Public ReadOnly Property Ttl As Integer
  109.         Get
  110.             Return _ttl
  111.         End Get
  112.     End Property
  113.  
  114.     Public Sub New(reply As PingReply)
  115.  
  116.         If reply IsNot Nothing Then
  117.             _status = reply.Status
  118.             _address = reply.Address
  119.             _roundtripMilliseconds = reply.RoundtripTime
  120.             _ttl = reply.Options.Ttl
  121.         Else
  122.             _status = IPStatus.Unknown
  123.             _address = IPAddress.None
  124.             _roundtripMilliseconds = -1
  125.             _ttl = -1
  126.         End If
  127.  
  128.     End Sub
  129.  
  130. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы