Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: sprawdzenie ip
anonim




Typ: Nie zarejestrowany
sprawdzenie ip

Potrzebuję zrobić takie coś:
Po wciśnięciu jakiegoś commandbuttona programik powinien zobaczyć, czy ip o adresie: cośtamcośtam jest alive i zwrócić msgboxa jest OK, lub gdy nie jest alive to zwrócić msboxa, że coś się zepsuło.
Bardzo proszę o pomoc

27-08-2003 15:44
  
Chudy
[TLHW]Wiktor



Typ: moderator
Postów: 574
Zarejestrowany: Aug 2002

Gdzieś był taki sampel jak zrobić Ping.


_____________________________________________
Projekt "Thunder Cannons" nadchodzi...

27-08-2003 23:07
Pokaż profil Chudy  Wyślij email do Chudy   Odwiedź stronę Chudy       1220895
Myle
2psc group




Typ: neutral
Postów: 29
Zarejestrowany: May 2003

jesli chcesz sprawdzac czy klient ma wlaczony Twoj program to zrob to przy uzyciu winsocksa - kazdy kogo bys sprawdzal bylby serwerem - a Ty klientem - jesli przez pewien czas (ustalony w timerze) klient niemoze sie polaczyc to oznacza to ze serwer jest niedostepny   pikus - tylko pamietaj ze to dziala jesli jest polaczenie p2p


_____________________________________________
Windows I love this game

28-08-2003 12:51
Pokaż profil Myle  Wyślij email do Myle   
ralfer




Typ: neutral
Postów: 47
Zarejestrowany: May 2003
Napewno nie nejprosciej......................

ale;-).......... mozna to zrobic wlasnie uruchamiajac ping'a...i exportujac dane z niego do pliku tekstowego(czy jakiego tam chesz mozesz go i *.tmp nazwac;-)))....potem tylko spradzac plik tekstowy i luzik.........wiem ze nie jest to jakis cwaniacki sposob ale powinno dzialac ... korzystalem w ten sposob z winipcfg i bylo git.....

29-08-2003 09:02
Pokaż profil ralfer  Wyślij email do ralfer   
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003
A to jest ten cwaniacki sposób : ) hehehehehehe

Musisz tylko pozmieniać niektóre linijki - tzn to gdzie ma sie pojawić odpowiedź (min to Form1.txtResult)


Attribute VB_Name = "modPing"
Option Explicit

Private Const IP_SUCCESS                As Long = 0
Private Const IP_STATUS_BASE            As Long = 11000
Private Const IP_BUF_TOO_SMALL          As Long = (11000 + 1)
Private Const IP_DEST_NET_UNREACHABLE  As Long = (11000 + 2)
Private Const IP_DEST_HOST_UNREACHABLE  As Long = (11000 + 3)
Private Const IP_DEST_PROT_UNREACHABLE  As Long = (11000 + 4)
Private Const IP_DEST_PORT_UNREACHABLE  As Long = (11000 + 5)
Private Const IP_NO_RESOURCES          As Long = (11000 + 6)
Private Const IP_BAD_OPTION            As Long = (11000 + 7)
Private Const IP_HW_ERROR              As Long = (11000 + 8)
Private Const IP_PACKET_TOO_BIG        As Long = (11000 + 9)
Private Const IP_REQ_TIMED_OUT          As Long = (11000 + 10)
Private Const IP_BAD_REQ                As Long = (11000 + 11)
Private Const IP_BAD_ROUTE              As Long = (11000 + 12)
Private Const IP_TTL_EXPIRED_TRANSIT    As Long = (11000 + 13)
Private Const IP_TTL_EXPIRED_REASSEM    As Long = (11000 + 14)
Private Const IP_PARAM_PROBLEM          As Long = (11000 + 15)
Private Const IP_SOURCE_QUENCH          As Long = (11000 + 16)
Private Const IP_OPTION_TOO_BIG        As Long = (11000 + 17)
Private Const IP_BAD_DESTINATION        As Long = (11000 + 18)
Private Const IP_ADDR_DELETED          As Long = (11000 + 19)
Private Const IP_SPEC_MTU_CHANGE        As Long = (11000 + 20)
Private Const IP_MTU_CHANGE            As Long = (11000 + 21)
Private Const IP_UNLOAD                As Long = (11000 + 22)
Private Const IP_ADDR_ADDED            As Long = (11000 + 23)
Private Const IP_GENERAL_FAILURE        As Long = (11000 + 50)
Private Const MAX_IP_STATUS            As Long = (11000 + 50)
Private Const IP_PENDING                As Long = (11000 + 255)
Private Const PING_TIMEOUT              As Long = 500
Private Const WS_VERSION_REQD          As Long = &H101
Private Const MIN_SOCKETS_REQD          As Long = 1
Private Const SOCKET_ERROR              As Long = -1
Private Const INADDR_NONE              As Long = &HFFFFFFFF
Private Const MAX_WSADescription        As Long = 256
Private Const MAX_WSASYSStatus          As Long = 128

Type ICMP_OPTIONS
    Ttl                                    As Byte
    Tos                                    As Byte
    Flags                                  As Byte
    OptionsSize                            As Byte
    OptionsData                            As Long
End Type

Type ICMP_ECHO_REPLY
    Address                                As Long
    status                                  As Long
    RoundTripTime                          As Long
    DataSize                                As Long
    DataPointer                            As Long
    Options                                As ICMP_OPTIONS
    Data                                    As String * 250
End Type

Type WSADATA
    wVersion                                As Integer
    wHighVersion                            As Integer
    szDescription(0 To MAX_WSADescription)  As Byte
    szSystemStatus(0 To MAX_WSASYSStatus)  As Byte
    wMaxSockets                            As Long
    wMaxUDPDG                              As Long
    dwVendorInfo                            As Long
End Type

Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As Long
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)
Private Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal s As String) As Long

Public Function Ping(sAddress As String, sDataToSend As String, ECHO As ICMP_ECHO_REPLY) As Long

    Dim hPort As Long
    Dim dwAddress As Long
 
    ' Konwersja adresu na liczbę typu Long
    dwAddress = inet_addr(sAddress)
    ' jeśli OK...
    If dwAddress <> INADDR_NONE Then
        ' Otwarcie portu
        hPort = IcmpCreateFile()
        If hPort Then
            ' Ping - ujemy ))
            Call IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), _
                              0, ECHO, Len(ECHO), PING_TIMEOUT)

            ' Pobierz status
            Ping = ECHO.status
            Call IcmpCloseHandle(hPort)
        End If
    Else
        ' Błąd
        Ping = INADDR_NONE
    End If

End Function

Public Sub SocketsCleanup()
 
  If WSACleanup() <> 0 Then
      MsgBox "Błąd inicjalizacji połączeń sieciowych.", vbExclamation
  End If
   
End Sub

Public Function SocketsInitialize() As Boolean

  Dim WSAD As WSADATA
 
  SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS
   
End Function

Public Function GetStatusCode(status As Long) As String

    Dim msg As String
 
    Select Case status
        Case IP_SUCCESS:              msg = "OK"
        Case INADDR_NONE:              msg = "Zły format IP"
        Case IP_BUF_TOO_SMALL:        msg = "Za mały bufor"
        Case IP_DEST_NET_UNREACHABLE:  msg = "Błąd sieci docelowej"
        Case IP_DEST_HOST_UNREACHABLE: msg = "Host docelowy nieosiągalny"
        Case IP_DEST_PROT_UNREACHABLE: msg = "Protokół docelowy nieosiągalny"
        Case IP_DEST_PORT_UNREACHABLE: msg = "Port docelowy nieosiągalny"
        Case IP_NO_RESOURCES:          msg = "Brak zasobów IP"
        Case IP_BAD_OPTION:            msg = "Zła opcja IP"
        Case IP_HW_ERROR:              msg = "Błąd HW"
        Case IP_PACKET_TOO_BIG:        msg = "Za duży pakiet"
        Case IP_REQ_TIMED_OUT:        msg = "Przekroczenie czasu żądania"
        Case IP_BAD_REQ:              msg = "Nieznane żądanie"
        Case IP_BAD_ROUTE:            msg = "Złe przekierowanie IP"
        Case IP_TTL_EXPIRED_TRANSIT:  msg = "Przekroczenie czasu transmisji TTL"
        Case IP_TTL_EXPIRED_REASSEM:  msg = "Przekroczenie czasu wznowienia TTL"
        Case IP_PARAM_PROBLEM:        msg = "Nieprawidłowy parametr"
        Case IP_SOURCE_QUENCH:        msg = "Błąd źródła IP"
        Case IP_OPTION_TOO_BIG:        msg = "Za duża opcja IP"
        Case IP_BAD_DESTINATION:      msg = "Złe przeznaczenie IP"
        Case IP_ADDR_DELETED:          msg = "Adres usunięty"
        Case IP_SPEC_MTU_CHANGE:      msg = "Zła specyfikacja MTU"
        Case IP_MTU_CHANGE:            msg = "Zmiana MTU"
        Case IP_UNLOAD:                msg = "Adres odłączony"
        Case IP_ADDR_ADDED:            msg = "Adres dodany"
        Case IP_GENERAL_FAILURE:      msg = "Błąd generalny IP"
        Case IP_PENDING:              msg = "ip pending"
        Case PING_TIMEOUT:            msg = "Przekroczenie czasu"
        Case Else:                    msg = "Nieznany"
    End Select
 
    GetStatusCode = msg 'CStr(status) & " - " & msg
 
End Function

Public Sub pINging()

    Dim ECHO As ICMP_ECHO_REPLY
    Dim pos As Long
    Dim success As Long
   
 
    ' Jeśli łącza sieciowe działają
    If SocketsInitialize() Then
       
        success = Ping(Form1.Combo1.Text, Form1.txtPingMsg.Text, ECHO)
     
        ' I co mamy ?
        Form1.txtResult.Text = GetStatusCode(success)
        'txtTripTime.Text = ECHO.RoundTripTime & " ms"
        'txtMsgSize.Text = ECHO.DataSize & " (bajtów)"
     
        If Left$(ECHO.Data, 1) <> Chr$(0) Then
            pos = InStr(ECHO.Data, Chr$(0))
            Form1.txtMsgReturned.Text = Left$(ECHO.Data, pos - 1)
            Form1.txtMsgHist.Text = Form1.txtMsgHist.Text & vbNewLine & "Odebrano:  ''" & Left$(ECHO.Data, pos - 1) & "''  = " & ECHO.DataSize & " (bajtów) => w czasie => " & ECHO.RoundTripTime & " ms"
        End If
       
       
        Call SocketsCleanup
     
  Else
 
        MsgBox "Brak odpowiedzi Windows Sockets.", vbExclamation
 
  End If

End Sub


Aha zapomniałem dodać - oczywiście wszystko to powinno sie znaleźć w module.

[Post edytowany dnia 30-08-2003 16:05 przez m-a-x]


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

30-08-2003 16:04
Pokaż profil m-a-x  Wyślij email do m-a-x   
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1