Ho creato un server con il seguente codice:
E un client con questo codice:codice:Imports System.Net.Sockets 'Libreria per gestire i sockets Imports System.Text.UTF8Encoding 'Libreria per decodificare in UTF8 Public Class Form1 Dim servitore As TcpListener 'Variabile server Dim cliente As TcpClient 'Variabile client Dim flusso As NetworkStream 'Variabile flusso di dati client-server Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load servitore = New TcpListener(8888) 'servitore è un nuovo server che riceve/invia dati su porta 8888 servitore.Start() 'Avvio server Timer2.Start() 'Avvio Timer2 TextBox2.Text = TextBox2.Text & "Server avviato!" & vbCrLf 'Scrivo nella TextBox2 End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If servitore.Pending() Then 'Se ci sono richieste di connessione in sospeso allora... Timer2.Stop() 'Stop Timer2 cliente = servitore.AcceptTcpClient() 'Accetta la connessione in sospeso flusso = cliente.GetStream() 'Flusso è l’invio/ricezione (Stream) di dati con cliente Timer1.Start() 'Avvia Timer1 TextBox2.Text = TextBox2.Text & "Si è connesso un utente in data " & Now() & vbCrLf 'Scrivo nella TextBox2 End If 'Fine se End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If cliente.Available > 0 Then 'Se i dati che ricevi da cliente sono disponibili e sono maggiori di 0 Dim temp(cliente.Available - 1) As Byte 'Dichiaro un array con dimensioni uguali al numero di dati ricevuti da cliente meno 1 flusso.Read(temp, 0, temp.Length) 'Leggo il flusso di dati Dim testo As String = UTF8.GetString(temp) 'Decodifica temp in stringa UTF8 e mettila in testo TextBox2.Text = TextBox2.Text & "Client: " & testo & vbCrLf 'Scrivo nella TextBox2 End If 'Fine se End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox2.Text = TextBox2.Text & "Server: " & TextBox1.Text & vbCrLf 'Scrivo nella TextBox2 Dim temp() As Byte = UTF8.GetBytes(TextBox1.Text) 'Decodifica la stringa in TextBox1 in bytes e metti ogni byte nell'array temp flusso.Write(temp, 0, temp.Length) 'Scrivi il flusso di dati TextBox1.Text = "" 'Cancello testo End Sub End Class
Solo che mi dà errore quando tento di connetterlicodice:Imports System.Net.Sockets 'Libreria per gestire i sockets Imports System.Text.UTF8Encoding 'Libreria per decodificare in UTF8 Public Class Form1 Dim cliente As TcpClient 'Variabile client Dim flusso As NetworkStream 'Variabile flusso di dati client-server Dim i As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim AddressIP As String = TextBox1.Text 'Metto l'ip dentro ad AddressIP 'PRENDO IP DELL'HOST SE QUELLO INSERITO è UN HOSTNAME E LO METTO DENTRO AD AddressIP If CheckBox1.Checked = True Then Dim IpCollection As New Collection Dim ipE As Net.IPHostEntry = System.Net.Dns.GetHostEntry(TextBox1.Text) Dim IpA() As Net.IPAddress = ipE.AddressList For i = 0 To IpA.GetUpperBound(0) IpCollection.Add(IpA(i).ToString) Next AddressIP = IpCollection.Item(1) End If cliente = New TcpClient 'cliente è un nuovo client cliente.Connect(AddressIP, 8888) 'Connetti cliente all'indirizzo ip indirizzo attraverso la porta 8888 If cliente.Connected Then 'Se cliente è connesso allora... (cioè se il server è in ascolto) TextBox3.Text = TextBox3.Text & "Connesso!" & vbCrLf 'Scrivo in TextBox3 flusso = cliente.GetStream() 'flusso è l’invio/ricezione (Stream) di dati con il server al quale cliente è connesso Timer1.Start() 'Avvio Timer1 Else 'Altrimenti... TextBox3.Text = TextBox3.Text & "Il server non risponde!" & vbCrLf 'Scrivo in TextBox3 End If 'Fine se End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If cliente.Available > 0 Then 'Se i dati che ricevi dal server al quale è connesso cliente sono disponibili e sono maggiori di 0 Dim temp(cliente.Available - 1) As Byte 'Dichiaro un array con dimensioni uguali al numero di dati ricevuti da cliente meno 1 flusso.Read(temp, 0, temp.Length) 'Leggo il flusso di dati Dim testo As String = UTF8.GetString(temp) 'Decodifica temp in stringa UTF8 e mettila in testo TextBox3.Text = TextBox3.Text & "Server: " & testo & vbCrLf 'Scrivo nella TextBox3 End If 'Fine se End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox3.Text = TextBox3.Text & "Client: " & TextBox2.Text & vbCrLf 'Scrivo nella TextBox3 Dim temp() As Byte = UTF8.GetBytes(TextBox2.Text) 'Decodifica la stringa in TextBox2 in bytes e metti ogni byte nell'array temp flusso.Write(temp, 0, temp.Length) 'Scrivi il flusso di dati TextBox2.Text = "" 'Cancello testo TextBox2.Focus() 'Attivo TextBox2 End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class![]()

Rispondi quotando
