Newsgroup: it.comp.lang.visual-basic
Titolo: IP e connessioni

ciao
ho cercato tra i messaggi vecchi ma non ho trovato nessun messaggio
sul sito comune non ho capito bene come funziona l'esempio
vorrei sapere se sì è connessi (magari far rimanere il mio programma nella
systray e quando ci si connette si apre) e come fare a sapere il proprio IP
dove posso trovare un piccolo help sul winsock? se provo a farlo connettere
a un host mi dice "Host già in uso"
aiutatemi per favore!
grazie
ciao
Alessandro


Per sapere se si è connessi utilizza questa Funzione:
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias RegOpenKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long)
As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public ReturnCode As Long
Public Function ActiveConnection() As Boolean
Dim hKey As Long
Dim lpSubKey As String
Dim phkResult As Long
Dim lpValueName As String
Dim lpReserved As Long
Dim lpType As Long
Dim lpData As Long
Dim lpcbData As Long
ActiveConnection = False
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, _
phkResult)
If ReturnCode = ERROR_SUCCESS Then
    hKey = phkResult
    lpValueName = "Remote Connection"
    lpReserved = APINULL
    lpType = APINULL
    lpData = APINULL
    lpcbData = APINULL
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, ByVal lpData, lpcbData)
    lpcbData = Len(lpData)
    ReturnCode = RegQueryValueEx(hKey, lpValueName, _
    lpReserved, lpType, lpData, lpcbData)
    If ReturnCode = ERROR_SUCCESS Then
        If lpData = 0 Then
            ActiveConnection = False
        Else
            ActiveConnection = True
        End If
    End If
RegCloseKey (hKey)
End If
End Function
Inserisci tutto in un modulo e controllo la variabile ActiveConnection. Se è
True, sei connesso altrimenti è false
Per sapere il proprio IP tramite un controllo Winsock utilizza la proprietà
Winsock.LocalIP
Ciao...OXI

 Winsock.LocalIP
grazie per avermi postato la funzione. poi la controllerò
mentre stavo scrivendo questa risposta sono andato a fare una prova in VB
perchè avevo un problema
ho realizzato che mettendo Winsock1.Close prima di impostare i parametri e
aprire la connessione funziona tutto. illuminami: è così la procedura giusta
o chissà che ho combinato?
nell'applicazione di prova che ho fatto ho messo nell'evento connect del
winsock un msgbox che mi fa vedere il mio IP.
subito dopo Winsock.Close
e si è piantato Visual Basic (ho VB6 ITA + SP4)
è rimasta la clessidra (l'applicazione che ho fatto si è chiusa), ma non
posso premere il pulsante stop
cosa devo fare? lasciare aperto il winsock anche se ho finito?
per ora grazie
ciao
Alessandro

 wrote in message
8lsskg$ank$1...@sirmdpsin16.inwind.it...

Per risolvere il tuo problema dovrei dare un'occhiata al codice. Quello che
mi dici risulta anche a me strano, e in ogni modo il Winsock1.Close viene
messo sempre quando una comunicazione viene terminata (E quindi non lo si
utilizza più) .
Fammi sapere
Ciao...OXI

non so.- adesso l'ho riscritta da capo e funziona
senti dove posso trovare una piccola guida al Winsock?
non ho chiare alcune cose:
una volta inviata una stringa all'host come faccio a catturare la risposta
appena arriva?
coem faccio ad attendere una risposta oppure una connessione?
grazie
ciao
Alessandro

 wrote in message
8luqv8$pt4$1...@sirmdpsin16.inwind.it...

Prova questi link:
http://www.archimedianet.it/ddesantis/Appunti%20VB/Winsock.html
http://www.archimedianet.it/ddesantis/Appunti%20VB/uso_pratico_Winsock_1.htm
http://www.archimedianet.it/ddesantis/Appunti%20VB/uso_pratico_Winsock_2.htm
http://www.ubi1k-vb.net/resources/articles/a4-1.html
Vedi se c'è qualcosa che faccia al tuo caso
Quando invii una stringa all'host tramite SendData, dovrai catturarla
durante l'evento DataArrival e usando il metodo Getdata.
Es.:
Private Sub Command1_Click()
If (Winsock1.State <> sckClosed) Then Winsock1.Close
Winsock1.LocalPort = 0
Winsock1.Connect "127.0.0.1", "3000"
End Sub
Private Sub Form_Load()
Winsock2.LocalPort = "3000"
Winsock2.Listen
End Sub
Private Sub Winsock1_Connect()
Winsock1.SendData "Ciao"
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock2.GetData Data
Text1.Text = Data
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
If (Winsock2.State <> sckClosed) Then Winsock2.Close
Winsock2.LocalPort = 0
Winsock2.Accept requestID
End Sub
Utilizza un pulsante, una textbox e due controlli Winsock. Dopo, osserva!
Per attendere una connessione usa "Listen" Cioè metti in ascolto un secondo
Winsock su una porta predefinita.
Ciao...OXI

 senti dove posso trovare una piccola guida al Winsock?
alt.winsock
alt.winsock.programming
alt.winsock.trumpet
piu' qualche comp.*
li' ci dovrebbe essere anche una faq
se ti serve, ti mando un piccolo hlp:
"windows sockets: an open interface for network programming under ms
windows"
credo sia di area ms, ma e' del 93. se cerchi in giro forse ne trovi uno
piu' recente.
ciao, a.