Avatar billede funtex Nybegynder
09. januar 2002 - 16:45 Der er 15 kommentarer og
1 løsning

Computer IP?

Er der nogen der kender til en måde at få IP adressen frem?
Et API call måske?
Avatar billede lassebm Nybegynder
09. januar 2002 - 16:47 #1
gå i dos og skriv ipconfig
Avatar billede annikadk Nybegynder
09. januar 2002 - 16:48 #2
den giver bare ikke den eksterne, men blot den interne
Avatar billede funtex Nybegynder
09. januar 2002 - 16:48 #3
Undskyld!!
Jeg skulle selvfølgelig have skrevet at det er et stykke kode til VB jeg skal bruge!
Avatar billede lassebm Nybegynder
09. januar 2002 - 16:49 #4
Heeh ja det har jeg lige set.. :o)
Avatar billede funtex Nybegynder
09. januar 2002 - 16:51 #5
Annikadk> Ipconfig giver begge dele (ihvertfald i xp)!
 
Avatar billede annikadk Nybegynder
09. januar 2002 - 17:08 #6
funtex: Hvis du er direkte på så???
Her er der kun intern ip, subnet og gateway (ja i XP)

Men bare du fandet det *Gg* og UPS... det er jo VB (skal lige vågne)

Over and out
Avatar billede tjacob Juniormester
09. januar 2002 - 17:09 #7
En simoel måde at gøre det på, er at indsætte en WinSock-konrol i en form.
Tilføjes via Project/Components...  vælg Microsoft WinSock Control

Nu kan du via WinSock kontrollen hente en del oplysninger.

F.eks. kan du sætte flg. kode i en knap eller lign:

Dim a

a = WinSock1.LocalIP

Henter din IP til variablen a

MVH tjacob
Avatar billede tjacob Juniormester
09. januar 2002 - 17:10 #8
simoel=simpel
Avatar billede funtex Nybegynder
09. januar 2002 - 18:44 #9
Hej Tjacob
Jeg kiggede på Winsock inden jeg skrev dette spørgsmål, men jeg synes kun jeg kan få fat i den eksterne ip og ikke den lokale?
Avatar billede cd_ Nybegynder
09. januar 2002 - 18:47 #10
Hvis den externe skal findes skal du bruge en anden computer der requester den hos dig hvorefter den sender den til dig, det er ret besværligt--
Avatar billede funtex Nybegynder
09. januar 2002 - 18:56 #11
cd>Jeg trorjeg formulerede mig forkert.
Jeg har adgang til to net fra min computer: Et lokalt(LAN) og så internetet (Via USB) Jeg kan få ip adressen til internettet frem med Winsock men ikke ip adressen til mit LAN
(har tjekket med ipconfig)
Avatar billede tjacob Juniormester
09. januar 2002 - 19:03 #12
Er det ikke er spørsgmål om først at skifte Winsock\'ens port? Åbenbart er din InternetIP på WinSock\'ens default port. Efter at have hentet den, så kunne man måske skifte port, og køre WinSock1.LocalIP igen. Hvordan du finder den rigtige port har jeg ingen anelse om. ;-)

/tjacob
Avatar billede tjacob Juniormester
09. januar 2002 - 19:15 #13
-nej, det er vist noget sludder.
Avatar billede proaccess Nybegynder
10. januar 2002 - 07:29 #14
FANDT FØLGENDE I \"GLEMTE SAGER\"...

Option Explicit

Private Const WS_VERSION_REQD = &H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \\ &H100 And &HFF&
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD = 1
Private Const SOCKET_ERROR = -1
Private Const WSADescription_Len = 256
Private Const WSASYS_Status_Len = 128

Private Type HOSTENT
  hName As Long
  hAliases As Long
  hAddrType As Integer
  hLength As Integer
  hAddrList As Long
End Type
 
Private Type WSADATA
  wversion As Integer
  wHighVersion As Integer
  szDescription(0 To WSADescription_Len) As Byte
  szSystemStatus(0 To WSASYS_Status_Len) As Byte
  iMaxSockets As Integer
  iMaxUdpDg As Integer
  lpszVendorInfo As Long
End Type
 
Private Declare Function WSAGetLastError Lib \"WSOCK32.DLL\" () As Long
Private Declare Function WSAStartup Lib \"WSOCK32.DLL\" (ByVal wVersionRequired&, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib \"WSOCK32.DLL\" () As Long
Private Declare Function gethostname Lib \"WSOCK32.DLL\" (ByVal hostname$, ByVal HostLen As Long) As Long
Private Declare Function gethostbyname Lib \"WSOCK32.DLL\" (ByVal hostname$) As Long
Private Declare Sub RtlMoveMemory Lib \"Kernel32\" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&)
Private Declare Function GetTickCount Lib \"kernel32.dll\" () As Long

Function hibyte(ByVal wParam As Integer)
  hibyte = wParam \\ &H100 And &HFF&
End Function
 
Function lobyte(ByVal wParam As Integer)
  lobyte = wParam And &HFF&
End Function

Sub SocketsInitialize()
  Dim WSAD As WSADATA
  Dim iReturn As Integer
  Dim sLowByte As String, sHighByte As String, sMsg As String
  iReturn = WSAStartup(WS_VERSION_REQD, WSAD)
  If iReturn <> 0 Then
    MsgBox \"Winsock.dll is not responding.\"
    End
  End If
  If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then
    sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))
    sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))
    sMsg = \"Windows Sockets version \" & sLowByte & \".\" & sHighByte
    sMsg = sMsg & \" is not supported by winsock.dll \"
    MsgBox sMsg
    End
  End If
  \'iMaxSockets is not used in winsock 2. So the following check is only
  \'necessary for winsock 1. If winsock 2 is requested,
  \'the following check can be skipped.
  If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
    sMsg = \"This application requires a minimum of \"
    sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & \" supported sockets.\"
    MsgBox sMsg
    End
  End If
End Sub
 
Sub SocketsCleanup()
  Dim lReturn As Long
  lReturn = WSACleanup()
  If lReturn <> 0 Then
    MsgBox \"Socket error \" & Trim$(Str$(lReturn)) & \" occurred in Cleanup \"
    End
  End If
End Sub

Sub Form_Load()
  SocketsInitialize
End Sub

Private Sub Form_Unload(Cancel As Integer)
  SocketsCleanup
End Sub

Private Sub Kommandoknap0_Click()
\' API-Kald
On Error GoTo Err_Kommandoknap0_Click
  Dim hostname As String * 256
  Dim hostent_addr As Long
  Dim host As HOSTENT
  Dim hostip_addr As Long
  Dim temp_ip_address() As Byte
  Dim i As Integer
  Dim ip_address As String
  If gethostname(hostname, 256) = SOCKET_ERROR Then
    MsgBox \"Windows Sockets error \" & Str(WSAGetLastError())
    Exit Sub
  Else
    hostname = Trim$(hostname)
  End If
  hostent_addr = gethostbyname(hostname)
  If hostent_addr = 0 Then
    MsgBox \"Winsock.dll is not responding.\"
    Exit Sub
  End If
  RtlMoveMemory host, hostent_addr, LenB(host)
  RtlMoveMemory hostip_addr, host.hAddrList, 4
  CompName = hostname
  \'get all of the IP address if machine is  multi-homed
  IPAdr.RowSource = \"\"
  Do
    ReDim temp_ip_address(1 To host.hLength)
    RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength
    For i = 1 To host.hLength
      ip_address = ip_address & temp_ip_address(i) & \".\"
    Next
    ip_address = Mid$(ip_address, 1, Len(ip_address) - 1)
    IPAdr.RowSource = IPAdr.RowSource & ip_address & \";\"
    ip_address = \"\"
    host.hAddrList = host.hAddrList + LenB(host.hAddrList)
    RtlMoveMemory hostip_addr, host.hAddrList, 4
  Loop While (hostip_addr <> 0)
Exit_Kommandoknap0_Click:
  Exit Sub
Err_Kommandoknap0_Click:
  MsgBox Err.Description
  Resume Exit_Kommandoknap0_Click
End Sub
Avatar billede proaccess Nybegynder
10. januar 2002 - 07:35 #15
CompName er en tekstboks og IPAdr er en liste...
Avatar billede funtex Nybegynder
10. januar 2002 - 19:57 #16
Kanon tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester