Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: otoczenie sieciowe
anonim




Typ: Nie zarejestrowany
otoczenie sieciowe

Oto moj problem: chcialbym umiec odczytywac 'otoczenie sieciowe'. Co najmniej chcialbym poznawac hosty (lub IP) kompow w otoczeniu, fajnie by bylo tez umiec korzystac z udostepnionych przez nie dyskow (odczyt i ew. zapis). Pomozcie.

16-08-2002 01:01
  
xeng



Typ: neutral
Postów: 102
Zarejestrowany: May 2002

Znasz program ApiGuide ?
Przedruk z tegoż programu.Dotyczy IP :
Const MAXLEN_PHYSADDR = 8
Private Type MIB_IPNETROW
    dwIndex As Long
    dwPhysAddrLen As Long
    bPhysAddr(0 To MAXLEN_PHYSADDR - 1) As Byte
    dwAddr As Long
    dwType As Long
End Type
Private Declare Function GetIpNetTable Lib "Iphlpapi" (pIpNetTable As Byte, pdwSize As Long, ByVal bOrder As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32
" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Sub Form_Load()
  Dim Listing() As MIB_IPNETROW, Ret As Long, Cnt As Long
    Dim bBytes() As Byte, bTemp(0 To 3) As Byte
    'set the graphics mode of this form to persistent
    Me.AutoRedraw = True
    'call the function to retrieve how many bytes are needed
    GetIpNetTable ByVal 0&, Ret, False
    'if it failed, exit the sub
    If Ret <= 0 Then Exit Sub
    'redimension our buffer
    ReDim bBytes(0 To Ret - 1) As Byte
    'retireve the data
    GetIpNetTable bBytes(0), Ret, False
    'copy the number of entries to the 'Ret' variable
    CopyMemory Ret, bBytes(0), 4
    'redimension  the Listing
    If Ret > 0 Then ReDim Listing(0 To Ret - 1) As MIB_IPNETROW
    'show the data
    Me.Print "Contents of address mapping table (items: " + CStr(Ret) + " ) "
    For Cnt = 0 To Ret - 1
        CopyMemory Listing(Cnt), bBytes(4 + 24 * Cnt), 24
        CopyMemory bTemp(0), Listing(Cnt).dwAddr, 4
        Me.Print "  Item " + CStr(Listing(Cnt).dwIndex)
        Me.Print "    address " + ConvertAddressToString(bTemp(), 4)
        Me.Print "    physical address " + ConvertAddressToString(Listing(Cnt).bPhysAddr, Listing(Cnt).dwPhysAddrLen)
        Select Case Listing(Cnt).dwType
            Case 4 'Static
                Me.Print "    type: Static"
            Case 3 'Dynamic
                Me.Print "    type: Dynamic"
            Case 2 'Invalid
                Me.Print "    type: Invalid"
            Case 1 'Other
                Me.Print "    type: Other"
        End Select
    Next Cnt
End Sub
'converts a byte array to a string
Public Function ConvertAddressToString(bArray() As Byte, lLength As Long) As String
    Dim Cnt As Long
    For Cnt = 0 To lLength - 1
        ConvertAddressToString = ConvertAddressToString + CStr(bArray(Cnt)) + "."
    Next Cnt
    ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function
[Koniec przedruku ]
Standart exe i do code formy przekopiuj jak leci.
Co do odczytywania zasobów udostepnionych umozliwia to np funkcja API GetOpenFileName
zapis :GetSaveFileName(oczywiscie jezeli udostepniający tak to udostępnil lub jeżeli znasz hasło)
Lub kontrolka ,która jest dodatkowo w VB :
CommonDialog .Prawdopodobnie bo ja jej nie używałem jeszcze
Powodzenia w rozwiazniu problemu. I zarejestruj się.Korzyść z tego taka że wysłal bym Ci jakiś przykład.A tak kopiuj i domyslaj się jak cos nie będzie działać.

[Post edytowany dnia 16-08-2002 17:05 przez xeng]


_____________________________________________
Nic nie umiem i nic nie wiem.Jestem tuman bity w ciemie.


16-08-2002 16:50
Pokaż profil xeng  Wyślij email do xeng   Odwiedź stronę xeng  
zenek




Typ: neutral
Postów: 1
Zarejestrowany: Aug 2002

posluchalem Twojej sugestji xeng i sie zarejestrowalem. na marginesie: jak znasz host lub IP (wsio jedno) to mozesz odczytywac i zapisywac pliki tak jak na swoim dysku : Open 'path' for Input As #FreeFile oraz Open......for Output...
path ma postac: "\\host\c\" lub "\\192.168.0.1\c\".
wyprobowalem i dziala. brakowalo mi tylko mozliwosci poznania hostow w otoczeniu sieciowym, zeby nie pingowac wszystkich 255 adresow, by poznac po omacku, ktore istnieja, a ktore nie.
niestety, wartosc 'Ret' w Twoim przykladzie zawsze ma u mnie 0. wiem jak powinna wygladac komunikacja miedzy kompami (tu akurat komp sle pytanie do serwera DHCP i komunikuje sie LANMANEM), potrafie napisac taki prg w c++ (w nim pisze na codzien), ale nie potrafie tego w VB. kuzyn mnie prosil o napisanie prg-ma wakacyjna praktyke myslalem, ze mi pojdzie lepiej, ale nie idzie wcale. po prostu to moj pierwszy raz z VB. poprosze o przyklad. moze to cos podpowie: snifowalem pakiety, po odpaleniu powyzszego prg z mojego kompa nie wylaza (dokladnie 0 pakietow). prg nie sle zapytan do serwera DHCP.

17-08-2002 15:51
Pokaż profil zenek  Wyślij email do zenek   
xeng



Typ: neutral
Postów: 102
Zarejestrowany: May 2002
Moze to pomoże :)

http://www.mvps.org/vbnet/index.html?code/network/ipaddress.htm

http://www.vb2themax.com/ItemBank.asp?PageID=CodeBank&Cat=1700#CAT

Te dwa linki i jeszcze wysle Ci coś Emilem
Lub można jeszcze skorzystać z dodatkowej kontrolki
VB : winsock czy cos takiego
Jak to Twój pierwszy raz z VB to kontrolki się dodaje w ten sposób Menu/Project/Components ,VB wywali takie okienko dialogowe z listą dostępnych kontrolek .Musisz znaleźdz :Microsoft Winsock Control (tu wersja kontrolki)
Jak na razie nie miałem potrzeby pisania programów tego typu.

[Post edytowany dnia 17-08-2002 21:58 przez xeng]


_____________________________________________
Nic nie umiem i nic nie wiem.Jestem tuman bity w ciemie.


17-08-2002 21:33
Pokaż profil xeng  Wyślij email do xeng   Odwiedź stronę xeng  
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1