IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème de String [Débutant]


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Problème de String
    Bonjour,

    Mon application est déclarée comme serveur et communique avec une autre application cliente. Après un simple test, la communication fonctionne parfaitement.
    Mon problème arrive après, lorsque je veux analyser la demande du client.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     Private Sub Timer10_Tick(sender As Object, e As EventArgs) Handles Timer10.Tick
            If client.Available > 0 Then
                Dim t(client.Available - 1) As Byte
                data.Read(t, 0, t.Length)
                Dim typeD As String = System.Text.UTF7Encoding.UTF7.GetString(t)
                TextBox32.Text = typeD
                If typeD = "Rue" Then
                    Dim temp() As Byte = UTF7.GetBytes(ordre1 & vbCrLf)
                    data.Write(temp, 0, temp.Length)
                    TextBox32.Text = TextBox32.Text & "  -  " & ordre1
                ElseIf typeD = "Ruelle" Then
                    Dim temp() As Byte = UTF7.GetBytes(ordre2 & vbCrLf)
                    data.Write(temp, 0, temp.Length)
                    TextBox32.Text = TextBox32.Text & "  -  " & ordre2
                Else
                    MsgBox("Pas d'ordre transmis")
                End If
            End If
        End Sub
    Si j'affiche la variable typeD dans une textbox, j'ai bien Rue ou Ruelle qui s'affiche. Pourtant, mon appli n'envoie rien au client. La msgBox s'affiche.
    Je ne comprends pas et je veux bien de l'aide.

    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    à tout hasard, si tu remplaces
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If typeD.CompareTo("Rue") = 0 Then
    est-ce que c'est mieux ?

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et msgbox(typeD) il dit quoi ?

    et le code client il ressemble à quoi ?

    sinon je pense que ca vient juste d'un manque de connaissance sur le tcp, où il est généralement conseillé de concaténer ce qui arrive et de faire une norme de transmission (type caractère de fin de transmission ou codage de la longueur de la transmission)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci pour vos propositions.

    Alors,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If typeD.CompareTo("Rue") = 0 Then
    me donne le même résultat

    Pour info, la textbox affiche 1 avec le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox32.Text = CStr(typeD.CompareTo("Rue"))
    msgbox(typeD) me dit soit Rue soit Ruelle

    Le code client est un script TCL et il dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    proc sendRequestACS { req } {
          variable privateACS
          global caption
     
    	set result "Communication interrompue entre Audela et ACS"
    	catch {
    		 puts  $privateACS(socket) $req
             	 flush $privateACS(socket)
             	 set result [gets $privateACS(socket)]
     
    		      }
    	return $result
      }
    La variable $req correspond soit à Rue ou Ruelle


    Bien que ce code ne demande pas de retour à la ligne (\n en tcl), je pense qu'il y en a un à la fin de la transmission.
    J'ai volontairement provoqué une erreur en demandant la conversion de typeD dans une variable int.
    J'obtient ca
    Nom : img1.png
Affichages : 71
Taille : 4,2 Ko
    alors que je devrait obtenir
    Nom : img2.png
Affichages : 72
Taille : 3,3 Ko


    Comme j'ai la main sur le script TCL, je vais mettre un type caractère de fin de transmission puis le supprimer et tout ce qui suit de typeD.
    Un autre client peut se connecter, je n'ai pas la main sur celui-ci. Si je rencontre le problème, je calculerai la longueur de la chaine de typeD et je conserverai de typeD cette longueur -x caractère(s).

    J'essaye tout cela.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    typeD = typeD.Trim() ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par nnovic Voir le message
    typeD = typeD.Trim() ?
    Parfait.

    Avec
    typeD = typeD.Trim(vbCrLf.ToCharArray)

    Problème résolu.

    Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème mapping String.Array côté client
    Par valjjou dans le forum Services Web
    Réponses: 1
    Dernier message: 04/04/2007, 13h10
  2. Problème convertion string->double
    Par PP(Team) dans le forum C++
    Réponses: 5
    Dernier message: 07/03/2007, 08h51
  3. Problème std::string et operator <<
    Par jomeo dans le forum SL & STL
    Réponses: 2
    Dernier message: 21/02/2007, 11h36
  4. [DELPHI] Problème de String <-> MemoryStream
    Par Squall78 dans le forum Delphi
    Réponses: 19
    Dernier message: 17/09/2006, 09h56
  5. [D7][Débutant] Problème conversion String <- TEdit
    Par _alex_ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/02/2006, 22h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo