Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto chat!!

E' da poco che utilizzo il controllo Winsock. Per cominciare avavo pensato
di mettere in pratica l'esempio della guida di VB5 per realizzare una chat.
L'esempio consta di due form su cui bisogna posizionare 2 caselle: txtsend
per inviare il messaggio; txtoutput per ricevere quello inviato da un
computer remoto.
Inoltre su ognuna delle due form è necessario posizionare un controllo
Winsock impostato sul protocollo UDP. Le porte delle due form devono essere
invertite: se la porta di input di una form è 1001 e la porta di output (a
cui si applica il metodo "bind") 1002, viceversa, sull'altra form sarà
rispettivamente 1002 e 1001.
All'interno della routine dell'evento "Change" delle due caselle txtsend
viene applicato il metodo "SendData", mentre l'evento "DataArrival" del
controllo Winsock è catturato da entrambe le caselle txtOutput.
Perché tutto funzioni a dovere, è infine necessario indicare il nome del
computer con cui si desidera scambiare i dati.
Presupponendo di chattare con un computer remoto è necessario creare due
applicazioni diverse da installare su i computer connessi.
Ci ho provato: ho avviato una connessione con Accesso Remoto
contemporaneamente ad un amico, dopo esserci, ovviamente, scambiati
reciprocamente i nomi dei nostri PC.
Ma quando ho provato ad inviare qualcosa al mio amico, l'invio dei dati era
lentissimo (in media 1 o 2 caratteri al secondo), ma tanto il mio amico non
riceveva un bel niente!!
Invio il codice del mio programma in modo che potrete darci un'occhiata e
dirmi dove sbaglio, perché da solo non ci arrivo! :-(
-------------------La mia applicazione
Private Sub txtSend_Change()
    ' Invia il testo quando viene digitato.
    udpPeerA.SendData txtSend.Text
End Sub
Private Sub udpPeerA_DataArrival (ByVal bytesTotal As Long)
Dim strData                                     'La casella txtOutput riceve
i dati
udpPeerA.GetData strData
    txtOutput.Text = strData
End Sub
Private Sub Form_Load()
' Il nome del controllo è udpPeerA
    With udpPeerA
        ' IMPORTANTE: assicurarsi di assegnare a
        ' RemoteHost il nome del computer.
        .RemoteHost = NomeDelComputerRemoto
        .RemotePort = 1001   ' Porta a cui ci si
                                    ' connette.
        .Bind 1002              ' Associazione alla porta
                                    ' locale.
    End With
End Sub
----------------------
L'altra applicazione (quella che ho dato al mio amico, per intenderci) è
praticamente uguale alla precedente tranne che nell'evento Form_Load
s'invertono le porte:
Private Sub Form_Load()
' Il nome del controllo è udpPeerA
    With udpPeerA
        ' IMPORTANTE: assicurarsi di assegnare a
        ' RemoteHost il nome del computer.
        .RemoteHost = NomeDelComputerRemoto
        .RemotePort = 1002   ' Porta a cui ci si
                                    ' connette.
        .Bind 1001              ' Associazione alla porta
                                    ' locale.
    End With
End Sub
Dove sbaglio???

:

Sul Computer che riceve i dati devi dare il comando udpPeerA.listen senza 
assegnare alcunchè a udpPeerA.remotehost
Sull'evento connectionrequest di questo devi mettere il comando 
udpPeerA.accept requestID
Sul controllo winsock che si connette invece devi dare il comando 
udpPeerA.connect dopo aver settato il valore udpPeerA.remotehostip sull'IP 
del computer su cui connetterti.
Andrea Fontana
E-Mail: 
fon...@ubi1k-vb.net
ICQ Uin: 27799781

...


 wrote in message
8er9km$hp$1...@nslave1.tin.it...


...


 wrote in message
8etnv3$qe8$1...@nslave2.tin.it...


 wrote in message
8f1khp$m0h$1...@nslave2.tin.it...


 ha scritto nel messaggio
news:8f7m72$oej$1...@nmaster.tin.it...
