Newsgroup: it.comp.lang.visual-basic
Titolo: AIUTO: TROVARE IL MIO INDIRIZZO IP

Ciao vi prego aiutatemi.....
sono disperato sono giorni che cerco un modo alternativo all WINSOCK per
trovare il mio indirizzo IP.
Vi chiederete come mai ? semplicemente xche nel pc ho installato una scheda
di rete e un modem ADSL ethernet e col
WINSOCK mi prende l'ip della scheda di rete.
Conoscete una soluzione ???
grazie in anticipo a tutti
Ciao Adriano

 boh, io nn ho mai provato, ma vai su esegui e scrivi winipcfg
cyao

 ha scritto nel messaggio
news:3D3F11E...@tin.it...


 ha scritto nel messaggio
news:giE%8.25355$s74.6...@twister1.libero.it...

Credo che sia *dura* .... anche con strumenti tipo ipconfig e winipcfg il
risultato è lo stesso ovvero nisba
ritengo che anche il modem adsl si comporti come un router....
ciao
Acia

 ha scritto nel messaggio
news:giE%8.25355$s74.6...@twister1.libero.it...

Quando carichi il controllo, e prima di eseguire una connessione o prima di
attivare il metodo Listen devi utilizzare il metodo bind per dichiarare con
quale IP connetterti:
Se guardi bene nell'help di MSDN viene spiegato con quale criterio vengono
assegnate le priorità ai dispositivi ethernet, cito:
"Il metodo Bind
Come illustrato nel codice sopra riportato, è necessario richiamare il
metodo Bind quando si crea un'applicazione UDP. Il metodo Bind "riserva" una
porta locale perché venga utilizzata dal controllo. Quando ad esempio si
associa il controllo al numero di porta 1001, nessun'altra applicazione
potrà utilizzare tale porta per "l'ascolto". Questo può risultare utile se
si desidera impedire che una porta venga utilizzata da altre applicazioni.
Il metodo Bind è inoltre caratterizzato da un secondo argomento facoltativo.
Se nel computer sono presenti più schede di rete, l'argomento IPLocale
consentirà di specificare quale scheda utilizzare. Se si omette questo
argomento, il controllo utilizzerà la prima scheda di rete elencata nella
finestra di dialogo visualizzata facendo doppio clic sull'icona Rete del
Pannello di controllo. Quando si utilizza il protocollo UDP, è possibile
modificare il valore delle proprietà RemoteHost e RemotePort mantenendo
l'associazione alla stessa porta locale. Con il protocollo TCP è tuttavia
necessario chiudere la connessione prima di modificare il valore delle
proprietà RemoteHost e RemotePort."
Tuttavia non parlano di dispositivi diversi da Ethernet.
Quindi se è per far delle prove, una volta connesso con ADSL puoi digitare
al prompt i soliti Ipconfig /all per NT o WK, oppure Winipcfg per il resto
degli O.S M$, ti ricavi l'IP assegnato all ADSL e lo dichiari con il metodo
bind:
NomeControlloWinSock.Bind PortaLocale, IPLocale.
Nota inoltre che su connessioni PPP solitamente una volta eseguita la
connessione correttamente tra winsock client e winsock server, se questa
viene interrotta, non è possibile ristabilirla prontamente sulla stessa
copia winsock portalocale ed iplocale finchè persiste lo stato di TIME_WAIT
della copia (verificabile con Netstat).

questo dovrebbe tirarti fuori tutti gli indirizzi attivi, vedi un po'...
carlo
http://www.vb.kiev.ua/code/networks/GetTcpTable.zip

 ha scritto nel messaggio
news:giE%8.25355$s74.6...@twister1.libero.it...

Avevo il tuo medesimo problema.....questa api lo risolve:
la funzione GetWanIP  ti restituisce l'ip dell'isp se sei connesso con RAS
altrimenti ti restituisce l'ip della scheda di rete
'in a module:
'******************************************************************
'Origin Created By Verburgh Peter.
'Modified By TapTapYu (
tapt...@yahoo.com
)
'The origin example to get the list of IP already very good, i modified it,
so
'if user is connected to internet, it will not return the Lan IP
'******************************************************************
Const MAX_IP = 5   'To make a buffer... i dont think you have more than 5 ip
on your pc..
Type IPINFO
     dwAddr As Long   ' IP address
    dwIndex As Long ' interface index
    dwMask As Long ' subnet mask
    dwBCastAddr As Long ' broadcast address
    dwReasmSize  As Long ' assembly size
    unused1 As Integer ' not currently used
    unused2 As Integer '; not currently used
End Type
Type MIB_IPADDRTABLE
    dEntrys As Long   'number of entries in the table
    mIPInfo(MAX_IP) As IPINFO  'array of IP address entries
End Type
Type IP_Array
    mBuffer As MIB_IPADDRTABLE
    BufferLen As Long
End Type
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte,
pdwSize As Long, ByVal Sort As Long) As Long
'converts a Long to a string
Public Function ConvertAddressToString(longAddr As Long) As String
    Dim myByte(3) As Byte
    Dim Cnt As Long
    CopyMemory myByte(0), longAddr, 4
    For Cnt = 0 To 3
        ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt))
+ "."
    Next Cnt
    ConvertAddressToString = Left$(ConvertAddressToString,
Len(ConvertAddressToString) - 1)
End Function
Public Function GetWanIP() As String
Dim Ret As Long, Tel As Long
Dim bBytes() As Byte
Dim TempList() As String
Dim TempIP As String
Dim Tempi As Long
Dim Listing As MIB_IPADDRTABLE
Dim L3 As String
On Error GoTo END1
    GetIpAddrTable ByVal 0&, Ret, True
    If Ret <= 0 Then Exit Function
    ReDim bBytes(0 To Ret - 1) As Byte
    ReDim TempList(0 To Ret - 1) As String
    'retrieve the data
    GetIpAddrTable bBytes(0), Ret, False
    'Get the first 4 bytes to get the entry's.. ip installed
    CopyMemory Listing.dEntrys, bBytes(0), 4
    For Tel = 0 To Listing.dEntrys - 1
        'Copy whole structure to Listing..
        CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel *
Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
        TempList(Tel) = ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr)
    Next Tel
    'Sort Out The IP For WAN
        TempIP = TempList(0)
        For Tempi = 0 To Listing.dEntrys - 1
            L3 = Left(TempList(Tempi), 3)
            If L3 <> "169" And L3 <> "127" And L3 <> "192" Then
                TempIP = TempList(Tempi)
            End If
        Next Tempi
        GetWanIP = TempIP 'Return The TempIP
Exit Function
END1:
GetWanIP = ""
End Function

 ha scritto nel messaggio
news:Ira09.122576$Jj7.2...@news1.tin.it...



Mi associo....