Problème de retour à la ligne (Application basique serveur - client)

madaal Messages postés 17 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 6 mai 2011 - 16 nov. 2010 à 16:22
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011 - 16 nov. 2010 à 19:20
alors que je veux essayer de créer ma première application avec les sokets. je me heurte à un problème.

En résumé j'ai : Un client tpc et un serveur tpc (TPC listener) et 2 networkstreams.

Lorsque j'envoie un message quelconque de mon client au serveur (en passant par le networkstream) je reçoit des caractères en trop (plus de 200).

En clair j'obtient ca :

En attente de connexion ...
Connexion établie
Reçu : Essai














Envoyé : Essaireponse


C'est assez embêtant et je ne voit pas ce qui ne marche pas.

Mon code :

Serveur :

    Sub Main()
        Const portNumber As Integer = 8000
        Dim tcpListener As New TcpListener(portNumber) 'partie du serveur ( TPCclient client et TPC Listener serveur
        tcpListener.Start()
        msg("En attente de connexions")
        Try
            Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient() 'bloque le thread en cours jusqu'à la connexion d'un nouveau client
            msg("Connexion acceptée.")
            Dim networkStream As NetworkStream = tcpClient.GetStream() 'crée un network stream qui nous permet de trasnmettre des informations

            'Envoie au client que la connxeion a bien été établie
            Dim Bytesenvoyer As [Byte]() = Encoding.ASCII.GetBytes("Connexion avec le serveur OK")
            networkStream.Write(Bytesenvoyer, 0, Bytesenvoyer.Length)


            Dim MessageenBytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(MessageenBytes, 0, CInt(tcpClient.ReceiveBufferSize))
            Dim Message As String = Encoding.ASCII.GetString(MessageenBytes)

            msg(Message)

            'CEST ICI QUE JAFFICHE CE QUI EST TROP GRAND.



            End While


            'arret du serveur
            Console.ReadLine()
            tcpClient.Close()
            tcpListener.Stop()
            Console.WriteLine("exit")
            Console.ReadLine()
        Catch ex As Exception
            msg("Erreur : ")
            msg(ex.ToString())
            Console.ReadLine()
        End Try
    End Sub

    Sub msg(ByVal message As String)
        message.Trim()
        message.Replace(vbCrLf, "")
        message.Replace(Chr(13), "")

        Console.WriteLine(message)
    End Sub



End Module


Et le client :

Imports System.Net.Sockets
Imports System.Text

Public Class Form1

    Dim tcpClient As System.Net.Sockets.TcpClient
    Dim networkStream As NetworkStream
    Dim Connecté As Boolean = False

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If Not Connecté Then
            Connexion()
        Else
            Deconnexion()
        End If
    End Sub

    Sub Connexion()
        'connexion au serveur
        tcpClient = New System.Net.Sockets.TcpClient()
        tcpClient.Connect("127.0.0.1", 8000)
        networkStream = tcpClient.GetStream()
        msg("Tentative de connexion avec le serveur ...")

        'si on peut écrire et lire on continue
        If networkStream.CanWrite And networkStream.CanRead Then

            'On bloque le tread jusqu'à la réception du message d'accueil
            Dim MessagedaccueilenBytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(MessagedaccueilenBytes, 0, CInt(tcpClient.ReceiveBufferSize))
            Dim Messagesdaccueil As String = Encoding.ASCII.GetString(MessagedaccueilenBytes)
            msg(Messagesdaccueil)

            Connecté = True

            Dim Bytesenvoyer As [Byte]() = Encoding.ASCII.GetBytes("Essai")
            networkStream.Write(Bytesenvoyer, 0, Bytesenvoyer.Length)

        Else
            If Not networkStream.CanRead Then
                Console.WriteLine("Ne peut pas lire ce que renvoie le serveur")
                Deconnexion()
            Else
                If Not networkStream.CanWrite Then
                    Console.WriteLine("Ne peut pas envoyer au serveur")
                    Deconnexion()
                End If
            End If
        End If
    End Sub

    Sub Deconnexion()
        msg("Connexion stopée")
        tcpClient.Close()
        Connecté = False
    End Sub

    Sub msg(ByVal message As String)
        message.Trim()
        TextBox1.Text += message & vbCrLf
    End Sub

End Class


Je tien à préciser que j'ai cherché mais aucune solution trouvé n'a eu d'effet pour l'instant.

2 réponses

madaal Messages postés 17 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 6 mai 2011
16 nov. 2010 à 19:15
Je me suis trompé de catégorie. Topic à fermer.
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
16 nov. 2010 à 19:20
Salut, tu es sûr que ce n'est pas le
serveur qui t'envoie ces 200 caractères ?
Sinon oui tu t'es trompé d'endroit c'est du .net
Salutations
0
Rejoignez-nous