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 6 et antérieur Discussion :

petit probleme client/serveur


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut petit probleme client/serveur
    bonjour a tous je vous explique mon problème :
    j'ai une application serveur qui gère la multiconnection (pour avoir plusieurs client connecté en même temps)
    voici le code pour accepter une connection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
        nb = nb + 1
        Load Wsck(nb)
        Wsck(nb).Accept requestID
        Wsck(nb).SendData ("F" & "Bonjour" & "<FIN>")
        DoEvents
    End sub
    jusque la pas de problème. Maintenant je voudrai pouvoir envoyer un message a tous mes clients connectés pour cela j ai pensé a une boucle for each que j'ai réalisé comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim W as Winsock
    For Each W In Wsck
            W.SendData ("V" & "blablabla" & "<FIN>")
            DoEvents
    Next W
    quand je lance mon application j'ai une erreur 40006. J'aimerai avoir un peu d'aide pour réussir à résoudre ce problème. Merci d'avance à tous

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Que se passe t'il quand un client ferme la connection ? , le winsock est toujours la, ou il a été déchargé ?
    Parce qu'il est difficile de faire un senddata sur un winsock dont la connection a été fermée
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    pour ceux qui ce sont un peu penché sur mon problème je viens de découvrir quelque chose si ca peut vous aider pour me dire d ou vient mon soucis. En fait après avoir accepter la connection j'ai rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label1.caption=wsck.count
    et la a ma grande surprise il m'affiche 2 alors qu'un seul client se connecte. Si vous savez d ou cela peut provenir

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Normal, le winsock d'indice zéro a été défini au desing time. tu ajoutes un winsock à chaque connection. donc dès le permier client, tu a deux controles winsock
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    quand un client quitte la connection j'ai l'evenement quivant qui se lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Wsck_Close(index As Integer)
        Unload Wsck(index)
        If Wsck.Count - 1 = 0 Then nb = 0
    End Sub
    Et j'ai mis dans mon code un for each justement pour ne pas avoir le problème d'envoie d'une donnée sur un client qui n'est pas connecté

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    donc en fait ca serai ce winsock 0 qui me genererait ce problème. Est il possible de ne pas tenir compte de ce winsock????

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Seulement le winsock d'indice zéro n'est jamais connecté, c'est probablement lui qui n'aime pas les senddata
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    oui c est cela car j ai essayé en pas a pas et si dans ma boucle for je saute le premier passage ca fonctionne. Il faudrai donc que j'arrive a ne pas tenir compte de ce winsock 0 Mais comment ?????

  9. #9
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Peso, j'utilises une chaine de caractères blanc dont la longeur correspond au nombres de connection maxi que j'autorise. quand je connecte le Xième client , je remplace le xieme caractère de la chaine par un X, que je remetrais à blanc à la deconnection.
    ensuite je fais une boucle du premier au dernier caractere , si j'ai un blanc, la cionnection est fermée, si j'ai un x, je peux envoyer un senddata.
    Par la même occasion, je charge / decharge le winsock en suivant bien cette chaine de caracteres, ce qui permet de réutiliser les trous (un client qui s'est déconnecté)
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    ok merci beaucoup delbeke je vais tester votre solution et je vous tien au courant.

  11. #11
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Pour t'aider j'ai ecrit vite fait ce bout de code
    Inspire tois en

    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
    21
    22
    Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
      NumConnection = InStr(ListeConnect, " ")
      Mid(ListeConnect, NumConnection, 1) = "X"
      Load Wsck(NumConnection)
      Wsck(NumConnection).Accept requestID
      Wsck(NumConnection).SendData ("F" & "Bonjour" & "<FIN>")
      DoEvents
    End Sub
     
    Private Sub SendToAll(Text)
      Dim iPnt As Integer
      For iPnt = 1 To Len(ListeConnect)
        If Mid(ListeConnect, iPnt, 1) = "X" Then
          Wsck(iPnt).SendData Text & vbcrlf
        End If
      Next
    End Sub
     
    Private Sub Wsck_Close(index As Integer)
      Unload Wsck(index)
      Mid(ListeConnect, Index, 1) = " " 
    End Sub
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 140
    Points : 147
    Points
    147
    Par défaut
    merci a toi delbeke mon problème est résolu grâce a toi. Ta fonction fonctionne très bien encore un grand merci

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

Discussions similaires

  1. Probleme Client / Serveur en C
    Par tekken59 dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 29/12/2008, 14h05
  2. [Reseaux] Probleme client/serveur
    Par franc82 dans le forum C++
    Réponses: 3
    Dernier message: 24/04/2007, 22h14
  3. probleme client serveur en c
    Par oclone dans le forum C
    Réponses: 2
    Dernier message: 09/12/2006, 21h59
  4. [Reseau] probleme client/serveur TCP LInux
    Par jmjmjm dans le forum Réseau
    Réponses: 20
    Dernier message: 03/12/2006, 19h32
  5. Probleme Client / Serveur
    Par Kinian dans le forum Access
    Réponses: 4
    Dernier message: 16/06/2006, 10h12

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