Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [VB.NET] Problema chat

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10

    [VB.NET] Problema chat

    Salve a tutti,
    ho creato con vb 2008 un client e un server che si collegano l'un l'altro seguendo il protocollo TCP/IP. Bene, qusti due programmi dovrebbero fungere da chat; il problema è che quando li collego sembrerebbe che la connesione sia andata a buon fine (tant'è che mi risulta una connessione attiva fra questi) ma quando provo ad inviare un messaggio... non succede nulla. Nè si verifica un eccezzione nè invia il messaggio. Non penso sia un errore del codice che comunque vi posto:

    codice:
    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'verifica cnnessione ad internet
            verifica_internet()
            If internet = 1 Then  ' variabile che controlla internet
                Exit Sub
            End If
            'invio(dati)
            Try
                Dim temporaneo() As Byte = UTF8.GetBytes(TextBox1.Text)
                flusso.Write(temporaneo, 0, temporaneo.Length) 'variabile networkstream
                TextBox2.Text = TextBox2.Text & "Me: " & TextBox1.Text & "........." & Now.Hour _
    & ":" & Now.Minute & vbCrLf 
                TextBox1.Text = "" ' casella dove inserire il testo
            Catch ex As NullReferenceException
                MsgBox("Connessione assente!", MsgBoxStyle.Critical, "Errore di connessione")
            End Try
        End Sub
    Rikoski

  2. #2
    Ciao
    Il codice che hai postato è quello di invio ...... e quello di ricezione??

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    è quello di invio... adesso posto anche quello di ricezione:

    codice:
     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            'ricezione dati
            If cliente.Available > 0 Then
                Dim temporaneo(cliente.Available - 1) As Byte
                flusso.Read(temporaneo, 0, temporaneo.Length) ' variabile networkstream
                Dim testo As String = UTF8.GetString(temporaneo)
                TextBox2.Text = TextBox2.Text & "Contatto: " & testo & "........." & Now.Hour & ":" & Now.Minute & vbCrLf
            End If
        End Sub
    Rikoski

  4. #4
    Visto così .... sembrerebbe tutto corretto.
    Probabilmente sbagli nella parte di connessione Client-Server.
    Prova a mettere un punto di interruzione(F9) sulla riga
    codice:
       Dim temporaneo(cliente.Available - 1) As Byte
    ed a lanciare l'applicazione in Debug .... cosa succede? Il debug attraversa il punto di inetrruzione?
    Magari nel prossimo post prova a mostrare anche il resto del codice .... quello relativo alla connessione.

    Facci sapere....
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    ok vi posto la prte di codice inerente alla connessione. nel frattempo però ho pensato che potesse essere anche dato dal firewall ma questo mi bloccherebbe la connesssione e non il flusso dei dati. che ne pensate??

    codice:
        
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button2.Click
            'verifica cnnessione ad internet
            verifica_internet()
            If internet = 1 Then
                Exit Sub
            End If
            'connessione
            Dim indirizzo As Net.IPAddress
            If Button2.Text = "Connetti" Then
                'converte in un IP+connessione
                Net.IPAddress.TryParse(TextBox3.Text, indirizzo)
                cliente = New TcpClient
                Try
                    cliente.Connect(indirizzo, 8888) 'porta 8888 TCP
                Catch ex As Exception
                    MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "ERRORE")
                End Try
                'verifica connessione avvenuta
                If cliente.Connected Then
                    flusso = cliente.GetStream
                    TextBox2.Text = TextBox2.Text & "Connesso........." & Now.Hour & ":" & Now.Minute & vbCrLf
                    Timer1.Start()
                    Button2.Text = "Disconnetti"
                    TextBox3.ReadOnly = True
                Else
                    TextBox2.Text = TextBox2.Text & "Connessione fallita!" & vbCrLf
                    MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "ERRORE")
                End If
            End If
    Rikoski

  6. #6
    Ciao
    Non so come dirtelo ..... per capire dove potrebbe essere un eventuale problema, bisogna che posti il codice che hai scritto sia lato client sia lato server.
    Sia quello relativo alla connessione sia quello relativo allo scambio di dati altrimenti non ti si riesce ad aiutare.
    Il codice che hai postato è quello lato client .... manca quello lato server ... poi dovremmo esserci.

    Facci sapere...
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    la parte relativa all'ascolto:

    codice:
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'ascolto
            ascoltatore = New TcpListener(8888)
            ascoltatore.Start()
            Timer2.Start()
            TextBox2.Text = TextBox2.Text & "Sono in attesa di qualcuno........." & Now.Hour & ":" & Now.Minute & vbCrLf
    
        End Sub
    parte relativa alla richiesta di una connessione:

    codice:
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
            'richiesta di connessione
            Try
                If ascoltatore.Pending() Then
                    Timer2.Stop()
                    cliente = ascoltatore.AcceptTcpClient
                    ascoltatore.Stop()
                    flusso = cliente.GetStream
                    Timer1.Start() ' controlla l'arrivo dei dati
                    TextBox2.Text = TextBox2.Text & "Si è connesso un utente........." & Now.Hour & ":" & Now.Minute & vbCrLf
                End If
            Catch ex As Exception
                MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "Errore di connessione")
            End Try
        End Sub
    Rikoski

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    Originariamente inviato da Jeremy75
    Ciao
    Non so come dirtelo ..... per capire dove potrebbe essere un eventuale problema, bisogna che posti il codice che hai scritto sia lato client sia lato server.
    Sia quello relativo alla connessione sia quello relativo allo scambio di dati altrimenti non ti si riesce ad aiutare.
    Il codice che hai postato è quello lato client .... manca quello lato server ... poi dovremmo esserci.

    Facci sapere...
    Ciao
    così dovrei avervi dato tutto?? scmabio dati e connessione sia client che server.
    se serve altro...basta chiedere.
    Grazie mille e scusate se qualche volta mi devo far pregare per farvi avere le cose
    Rikoski

  9. #9
    così dovrei avervi dato tutto??
    Si ... dammi solo il tempo di ricomporre tutto ..... e ti faccio sapere.
    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    10
    ok tanto non ho fretta! Grazie mille ancora.

    aspetto.
    Rikoski

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 © 2025 vBulletin Solutions, Inc. All rights reserved.