Ping сервера из своего приложения - Visual Basic .NET
Формулировка задачи:
Приветствую. Помогите пожалуйста кто может. Делаю программулю на ней уже есть список консольных команд , узнать ip сайта , добавить сайт в hosts файл (делаю эту программу для того чтобы упростить жизнь так как занимаюсь ремонтом ПК и часто бывает что приходиться сталкиваться с консолью win).
Вот вид программы:
Вопрос: Как добавить на форму консоль? Или как при нажатии кнопки в label1 появлялась информация как при помощи команды в cmd -
ping (адрес или ip) .
Пишу в Visual Studio 2013 - VB.
Заранее спасибо.
Решение задачи: «Ping сервера из своего приложения»
textual
Листинг программы
- Imports System.Net
- Imports System.Net.NetworkInformation
- Imports System.Threading
- Imports System.Threading.Tasks
- Class Pinger
- Private _numRequests As Integer
- Private _timeout As Integer
- Private _pingTask As Task
- Private _scheduler As TaskScheduler
- Private _hostNameOrAddress As String
- Public Event ReplyReceived As EventHandler(Of PingReplyEventArgs)
- Public Sub New(numRequests As Integer)
- Me.New(numRequests, 4000)
- End Sub
- Public Sub New(numRequests As Integer, timeout As Integer)
- If numRequests < 1 Then Throw New ArgumentOutOfRangeException("numRequests", "Attempts value must be greater than zero")
- _numRequests = numRequests
- _timeout = timeout
- End Sub
- Public Sub BeginSend(hostNameOrAddress As String)
- If _pingTask IsNot Nothing AndAlso Not _pingTask.IsCompleted Then
- Throw New InvalidOperationException("Ping is already in progress")
- End If
- _hostNameOrAddress = hostNameOrAddress
- _scheduler = TaskScheduler.FromCurrentSynchronizationContext()
- _pingTask = Task.Factory.StartNew(AddressOf DoPing, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default)
- End Sub
- Private Sub DoPing()
- Dim pingData() As Byte
- ReDim pingData(31)
- For I = 0 To pingData.Length - 1
- pingData(I) = CByte(97 + I Mod 30)
- Next
- Using ping As New Ping()
- For I = 0 To _numRequests - 1
- If I > 0 Then Thread.Sleep(900)
- Dim reply As PingReply = Nothing
- Try
- reply = ping.Send(_hostNameOrAddress, _timeout, pingData)
- Catch ex As PingException
- End Try
- Task.Factory.StartNew( _
- Sub(state) RaiseEvent ReplyReceived(Me, New PingReplyEventArgs(DirectCast(state, PingReply))), _
- reply, _
- CancellationToken.None, TaskCreationOptions.None, _
- _scheduler _
- ).Wait()
- Next
- End Using
- End Sub
- End Class
- Public Class PingReplyEventArgs
- Inherits EventArgs
- Private _status As IPStatus
- Private _address As IPAddress
- Private _roundtripMilliseconds As Long
- Private _ttl As Integer
- Public ReadOnly Property IsSuccess As Boolean
- Get
- Return _status = IPStatus.Success
- End Get
- End Property
- Public ReadOnly Property Status As IPStatus
- Get
- Return _status
- End Get
- End Property
- Public ReadOnly Property Address As IPAddress
- Get
- Return _address
- End Get
- End Property
- Public ReadOnly Property RoundtripMilliseconds As Long
- Get
- Return _roundtripMilliseconds
- End Get
- End Property
- Public ReadOnly Property Ttl As Integer
- Get
- Return _ttl
- End Get
- End Property
- Public Sub New(reply As PingReply)
- If reply IsNot Nothing Then
- _status = reply.Status
- _address = reply.Address
- _roundtripMilliseconds = reply.RoundtripTime
- _ttl = reply.Options.Ttl
- Else
- _status = IPStatus.Unknown
- _address = IPAddress.None
- _roundtripMilliseconds = -1
- _ttl = -1
- End If
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д