Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [vb 2005] Problema server

    Ho creato un server con il seguente 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
    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 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
    Solo che mi dà errore quando tento di connetterli
    Si, sono un criminale. Il mio crimine è la
    curiosità. Il mio crimine è quello di
    giudicare la gente in base a quello che
    pensa e dice, non per come appare.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Originariamente inviato da Hacker95
    Solo che mi dà errore quando tento di connetterli
    Dire l'errore non sarebbe una cattiva idea...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.