-
>>TheHackerX<<.
User deleted
Indice
1- Visual Studio (Download)
2- Creazione del Client
3- Spiegazione del codice del Client
4- Spiegazione del Server
5- Spiegazione del codice del Server
6- Saluti
1 - Visual Studio (Download)
Iniziamo col dire che ci sono diverse versioni di Visual Studio...
Dalla versione Express, alla Ultimate... La versione Express, quella con meno funzioni, è quella Gratis, mentre quella Ultimate è a pagamento...
Per chi non sapesse bene cos'è Visual Studio, consiglio di leggersi questo: Wikipedia Microsoft Visual Studio
Concludo dicendo anche che questo codice è testato sulla versione Visual Studio 2010 Ultimate, ma funziona anche con le versioni 2008 e 2012 di Visual Studio... Visto che il codice è testato, e risulta funzionante su Visual Studio 2010, vi riporto ai download delle versioni Express ed Ultimate.
Download Microsoft Visual Studio Express: Visual Studio 2010 Express
Download Microsoft Visual Studio Ultimate: Visual Studio 2010 Ultimate
2 - Creazione del Client
Dopo aver scaricato ed installato Visual Studio 2010, apriamolo.
Clicchiamo su Nuovo Progetto, e selezioniamo Windows Form... Diamo un nome alla nostra applicazione, e clicchiamo su Ok.
Ora andremo a creare una semplice "Chat" ossia un semplice scambio di Messaggi.
Nel Form inseriamo:
Una TextBox-> Nome: txtIP-> Text: 127.0.0.1
Un Button-> Nome: btnConnetti->Text: Connetti
Un' altra TextBox con la proprietà MultiLine attiva-> Nome: OutPut
Un' altra TextBox-> Nome: InputBox
Un Button-> Nome: btnSend->Text: Invia
Eccovi uno screen su come dovrebbe venire....
Infine inseriamo un Timer->Nome:tmrDati
Bene... Ora passiamo ai codici.... Ricordo che in questa parte metto il codice da copiare, e nell' altra parte della guida spiego il codice.
--------------------------------------------------
Doppio click su una parte del Form, accederemo così all' evento Load del Form1
Importiamo le librerie necessarie...
Questo codice va sopra a: Public Class Form1CODICEImports System.Net
Imports System.Net.Sockets
Imports System.Text.UTF7Encoding
Subito dopo Public Class Form1 inseriamo questo.CODICEDim server As TcpListener
Dim client As TcpClient
Dim NetStream As NetworkStream
Facciamo doppio click sul btnConnetti, ossia il tasto per connettersi...CODICEclient = New TcpClient
Try
Application.DoEvents()
client.Connect(txtIP.Text, 2000)
Catch ex As Exception
MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "Errore")
End Try
If client.Connected Then
MsgBox("Sei connesso!", MsgBoxStyle.Information, "Info")
NetStream = client.GetStream
btnConnetti.Enabled = False
End If
Ora facciamo doppio click su btnSend, il tasto per inviare i messaggi...CODICEDim t() As Byte = UTF7.GetBytes(InputBox.Text)
NetStream.Write(t, 0, t.Length)
Infine dobbiamo gestire i dati che arrivano... Quindi doppio click sul Timer...CODICEIf client.Available > 0 Then
Dim d(client.Available - 1) As Byte
NetStream.Read(d, 0, d.Length)
Dim stringa As String = UTF7.GetString(d)
OutPut.Text += vbCrLf & stringa
End If
BENE! Ecco come, più o meno, dovrebbe essere il vostro codice....
3 - Spiegazione del codice del Client
Nel primo codice non c' è molto da dire.... Serve solamente ad importare le librerie necessarie....
Nel secondo, dichiariamo 3 variabili....CODICEDim server As TcpListener è inutilizzata...
Dim client As TcpClient è la variabile che servirà a noi per connetterci
Dim NetStream As NetworkStream sarebbe il flusso (un "tubo") do viaggiano i dati....
Poi....CODICEClient = New TcpClient -> Inizializza il client
Try -> prova a_
Client.Connect(txtIP.Text, 2000) -> Connettiti all' IP specificato nella textbox dell'IP sulla porta 2000
Catch ex As Exception -> In caso di errore
MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "Errore") -> Mostra un messaggio di errore
If client.Connected Then -> Se la connessione è andata a buon fine
MsgBox("Sei connesso!", MsgBoxStyle.Information, "Info") -> Mostra un messaggio
NetStream = client.GetStream -> Metti in comunicazione il Client con il Server
btnConnetti.Enabled = False -> e disattiva il tasto per connetterti...
End If
Per inviare i messaggi....CODICEDim t() As Byte = UTF7.GetBytes(InputBox.Text) -> Crea un' Array di Byte che contenga il testo della inputbox
NetStream.Write(t, 0, t.Length) -> e scrivi questi dati nel flusso....
Infine per ricevere si esegue questo...CODICEIf client.Available > 0 Then -> Se il Server sta mandando dei dati
Dim d(client.Available - 1) As Byte -> Crea un' Array che li possa contenere
NetStream.Read(d, 0, d.Length) -> e falli leggere dal flusso... Ma siccome i dati letti sono in Byte
Dim stringa As String = UTF7.GetString(d) -> crea una variabile stringa che converta i byte in stringa normale
OutPut.Text += vbCrLf & stringa -> e insrisci quella stringa nella OutPut
End If
4 - Spiegazione del Server
Creiamo un nuovo progetto, ora nel Form andremo ad inserire:
1 TextBox -> Nome: OutPut Proprietà MultiLine attiva
1 TextBox -> Nome: InputBox
1 Button -> Nome: btnSend
1 Timer -> Nome: tmrConnessioni
1 Timer -> Nome: tmrDati
Eccovi uno screen di come dovrebbe venire...
Ottimo! Ora passiamo ai codici...
-------------------------------------------
Doppio click sul From, per accedere all' evento Load del Form1...
Ora dobbiamo inserire questo codice sopra Public Class Form1..CODICEImports System.Net
Imports System.Net.Sockets
Imports System.Text.UTF7Encoding
E poi, subito sotto andiamo ad inserire questo...CODICEDim server As TcpListener
Dim client As TcpClient
Dim NetStream As NetworkStream
Nel Form1.Load invece....CODICEserver = New TcpListener(2000)
server.Start()
OutPut.Text = "Server avviato... In attesa che quelcuno si connetta!"
tmrConnessioni.Start()
Doppio click sul Timer delle connessioni (tmrConnessioni) ed inseriamo questoCODICEIf server.Pending Then
client = server.AcceptTcpClient
NetStream = client.GetStream
OutPut.Text = "Si è connesso un utente!"
tmrConnessioni.Stop()
tmrDati.Start()
End If
Ora andiamo nel Timer che gestisce i dati in entrata (tmrDati) e inseriamo questo...CODICEIf client.Available > 0 Then
Dim b(client.Available - 1) As Byte
NetStream.Read(b, 0, b.Length)
Dim stringa As String = UTF7.GetString(b)
OutPut.Text += vbCrLf & stringa
End If
E per finire il codice del tasto che invia.... (btnSend)CODICEDim t() As Byte = UTF7.GetBytes(InputBox.Text)
NetStream.Write(t, 0, t.Length)
5 - Spiegazione del codice del Server
Eccoci giunti alla spiegazione del codice...
INIZIAMO!
---------------------------------------------
1° CodiceCODICEImports System.Net
Imports System.Net.Sockets
Imports System.Text.UTF7Encoding
Come ne client questo codice importa solamente le librerie necessarie allo sviluppo del server...
2° CodiceCODICEDim server As TcpListener
Dim client As TcpClient
Dim NetStream As NetworkStream
Con questo codice si dichiarano le variabili che verranno utilizzate dal Server..
3° CodiceCODICEserver = New TcpListener(2000) -> Inizializza il Server sulla porta 200
server.Start() -> Avvia il Server
OutPut.Text = "Server avviato... In attesa che quelcuno si connetta!" -> Scrive nella OutPut (<b>TextBox</b>)
tmrConnessioni.Start() -> Avvia il Timer che gestirà le connessioni
4° CodiceCODICEIf server.Pending Then -> Se qualche client stà cercando di connettersi
client = server.AcceptTcpClient -> Accettalo
NetStream = client.GetStream -> E mettiti in comunicazione con lui...
OutPut.Text = "Si è connesso un utente!" -> Scrivi sulla OutPut (<b>TextBox</b>)
tmrConnessioni.Stop() -> Fermati
tmrDati.Start() -> e avvia il timer che gestisce i dati in entrata...
End If
5° CodiceCODICEIf client.Available > 0 Then -> Se il Client stà mandando dei dati
Dim b(client.Available - 1) As Byte -> Crea un'Array di Byte che li possa contenere
NetStream.Read(b, 0, b.Length) -> Leggi i dati dall' Array <b>b</b>
Dim stringa As String = UTF7.GetString(b) -> Trasforma quei Byte in Stringa
OutPut.Text += vbCrLf & stringa -> E mettili nella OutPut...
End If
6° CodiceCODICEDim t() As Byte = UTF7.GetBytes(InputBox.Text) -> Crea un'Array di Byte che contenga il testo della InputBox
NetStream.Write(t, 0, t.Length) -> E scrivilo sul flusso di dati....
FINITO!
6 - Saluti
Balla ragazzi... La guida finisce quì... Spero vi sia stata utile e vi sia piaciuta.... Mi raccomando, iscrivetevi al Forum!!!!
Edited by >>TheHackerX<< - 17/2/2013, 12:43. -
Daniele Trabucco.
User deleted
Ciao!
ottimo spunto ma sto cercando di aggiungere a questo un altro flusso dati... ossia vorrei aggiungere lo streaming della cam come faccio ad etichiettare i diversi flussi?. -
SVPippone.
User deleted
Salve a tutti, vorrei capire se questa soluzione è corretta anche per pc non della stessa rete, in quest'ultimo caso dovrei specificare un IP pubblico?
Grazie mille. -
MarcoCad.
User deleted
Non funziona!
Sto usando vb2019. -
Marco Cadore.
User deleted
Non funziona lato server
New TcpListener
Edited by Marco Cadore - 21/8/2020, 19:32.