Salve a tutti. Sto sviluppando un'applicazione client-server in vb.net 2008 seguendo l'esempio che ho trovato su una guida. Il codice che pone in ascolto il server è questo:
codice:
'Inizializza il listener e inizia l'ascolto sulla porta
'5000. Inoltre, attiva il timer per controllare se ci
'sono connessioni in arrivo. Il timer scatta ogni 100ms
Listener = New TcpListener(IPAddress.Parse("127.0.0.1"), 5000)
Listener.Start()
tmrConnections.Start()
txtLog.AppendText("Server - in ascolto..." & Environment.NewLine)
e quello per verificare se ci sono connessioni in lista (sempre sul server) è questo:
codice:
'Se ci sono connessioni...
If Listener.Pending() Then
'Ferma un attimo il timer
tmrConnections.Stop()
'Chiede all'utente se confermare la connessione
If MessageBox.Show("Rilevato un tentativo di connessione. Accettare?", Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
'Ottiene l'oggetto TcpClient collegato al client
Client = Listener.AcceptTcpClient()
'Ferma il listener
Listener.Stop()
'Ottiene il network stream
NetStream = Client.GetStream()
Else
Listener.Stop()
Listener.Start()
tmrConnections.Start()
End If
End If
Dove tmrConnection è un timer, Listener è un oggetto di tipo TcpListener, NetStream è di tipo NetworkStream e Client è di tipo TcpClient
Il codice che tenta di connettere il client è questo:
codice:
Dim IP As Net.IPAddress = Nothing
'Prima esegue un controllo sull'indirizzo IP per
'controllare che sia valido
If Not Net.IPAddress.TryParse("127.0.0.1", IP) Then
MessageBox.Show("IP non valido!", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
IP = IPAddress.Parse("127.0.0.1")
'Quindi inizializza un client e tenta la connessione
'al dato IP sulla porta 5000
Client = New TcpClient()
txtLog.AppendText("Client - tentativo di connessione..." & vbCrLf)
Try
Application.DoEvents()
Client.Connect(IP, 5000)
Catch Ex As Exception
MessageBox.Show(Ex.Message)
End Try
'Se la connessione ha avuto successo, ottiene il network
'stream e agisce sui controlli come nel codice precedente
If Client.Connected Then
txtLog.AppendText("Tentativo di connessione riuscito!" & vbCrLf)
NetStream = Client.GetStream()
EnableControls(True)
Else
txtLog.AppendText("Tentativo di connessione fallito..." & vbCrLf)
End If
Client è un oggetto diverso, sempre di tipo TcpClient.
In entrambi txtLog è una textbox.
Ogni volta che tento di connettere il client (il server è sempre in ascolto) ricevo il messaggio di errore: "Impossibile stabilire una connessione. Rifiuto persistente del computer di destinazione 127.0.0.1:5000"
Cosa sto sbagliando?? Probabilmente sarà una cavolata ma è la prima volta che sviluppo una cosa del genere.
Grazie in anticipo.