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 :

Client Socket et VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut Client Socket et VB6
    Bonjour,

    Voilà je travaille actuellement sur le dévellopement d'une interface Graphique simple qui ouvre une socket client et se connecte au serveur par TCP/IP.

    Dans un sous menu de config. je met le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub BtnConnexion_Click()
        ESECO.Socket.Connect txtIP.Text, txtPort.Text
        txtResult.Text = "Connexion avec " &ESECO.Socket.RemoteHostIP 'Affciher l'adresse IP du Serveur    
    BtnConnexion.Enabled = False ' Bouton Connexion inactif
    CmdDeconnexion.Enabled = True 'Bouton Déconnexion Actif
    End Sub
     
    Private Sub CmdDeconnexion_Click()
        ESECO.Socket.Close
        txtResult.Text = "Connexion terminée !"
        BtnConnexion.Enabled = True
        CmdDeconnexion.Enabled = False
    End Sub
    Et le code de ma fenêtre principal :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub Config_Click()
        frmConfig.Show
    End Sub
     
    Private Sub Form_Load()
        Dim tabPir1(4) As String
        Dim tabPir2(4) As String
        Dim tabPeri1(4) As String
        Dim tabPeri2(4) As String
        Dim i As Integer
     
        tabPeri1(0) = "0C10"
        tabPeri1(1) = "4C50"
        tabPeri1(2) = "8C90"
        tabPeri1(3) = "1C00"
        tabPeri2(0) = "0CF0"
        tabPeri2(1) = "4CB0"
        tabPeri2(2) = "8C70"
        tabPeri2(3) = "1CE0"
        tabPir1(0) = "1450"
        tabPir1(1) = "4400"
        tabPir1(2) = "84C0"
        tabPir1(3) = "1450"
        tabPir2(0) = "14D0"
        tabPir2(1) = "4480"
        tabPir2(2) = "8440"
        tabPir2(3) = "14D0"
     
    End Sub
     
    Private Sub Socket_Connect() 'On vient de se connecter (on le dit)
        Picture1(1).Picture = LoadPicture("C:\LED\green.JPG")
    End Sub
     
    Private Sub Socket_DataArrival(ByVal bytesTotal As Long) 'Les données arrivent
        Dim strdata As String
        Dim data As Long
        txtResult.Text = " data = " & Hex(data)
    End Sub
    Le problème est que je ne reçoit pas les paquets de données en entier et pas dans le bon ordre voulus !
    Si je ne fait pas la conversions en Hex , je reçoit des caractères ilisibles, comment doit je faire pour recevoir sur ma socket client les données dans le bon ordres et en entier ?
    Merci pour vos réponses !

    ______________________________________________________________
    K.Bouhara
    Stagiaire : ESECO SYSTEMS
    Web3.0 and Web4.0 appliances for videosurveillance, security and risk protection

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Heu, c'est ou que tu lis les datas ?

    Je verrais bien quelque chose comme çà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Socket_DataArrival(ByVal bytesTotal As Long) 'Les données arrivent
        Dim data As String
        Socket.GetData Data, vbString
        txtResult.Text = " data = " & data
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Heu, c'est ou que tu lis les datas ?

    Je verrais bien quelque chose comme çà

    [code]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Socket_DataArrival(ByVal bytesTotal As Long) 'Les données arrivent
        Dim data As String
        Socket.GetData Data, vbString
        txtResult.Text = " data = " & data
    End Sub
    Bonjour,

    En faite je voudrais lire les datas arrivant sur ma socket, seulement la fonction DataArrival ne permet pas l'acquisitions totale des données !
    J'ai cru comprendre qu'il me fallait les mettre dans un buffer pour ensuite les découpé octets par octets pour pouvoir les traiter ?
    J'avais déja effectuer cette opérations en C ce qui donnait ceci :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    do
                     {
                       if((Nbr=recv(sock, buffer, sizeof(buffer), 0)) != SOCKET_ERROR) {
    //                     printf("Recu : Nbr - %d\n", Nbr);
     
    					 if (Nbr==1) {
    						 switch (buffer[0]){
    						 case 0x24:
    						//	 printf("PIR detector\n");
    							 break;
    						 case 0x42:
    						//	 printf("telecommande\n");
    							 break;
                             }
    					 }
    					 else {
    					    if (Nbr==5) {
    //									printf("TCode materiel PIR : %02x%02x%02x  - etat :%02x%02x  %02x%02x\n",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],state[0],state[1]);
    							if ((buffer[0]==mat[0]) && (buffer[1]==mat[1]) && (buffer[2]==mat[2])) {
    //								printf("Here\n");
    								if (!((buffer[3]==state[0]) && (buffer[4]==state[1]))) {
    									printf("Code materiel PIR : %02x%02x%02x  - etat :%02x%02x\n",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4]);
    									state[0]=buffer[3];
    									state[1]=buffer[4];
    							    }
    							}
    							else {
    								mat[0]=buffer[0];
    								mat[1]=buffer[1];
    								mat[2]=buffer[2];
    								state[0]=buffer[3];
    								state[1]=buffer[4];
    									printf("Code materiel PIR : %02x%02x%02x  - etat :%02x%02x\n",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4]);
    							}
                            }
    					    if (Nbr==9) {
    							if ((buffer[4]==mat[0]) && (buffer[5]==mat[1]) && (buffer[6]==mat[2])) {
    								if (!((buffer[7]==state[0]) && (buffer[8]==state[1]))) {
    									printf("Code materiel telecommande: %02x%02x%02x  - etat :%02x%02x\n",buffer[4],buffer[5],buffer[6],buffer[7],buffer[8]);
    									state[0]=buffer[7];
    									state[1]=buffer[8];
    							    }
    							}
    							else {
    								mat[0]=buffer[4];
    								mat[1]=buffer[5];
    								mat[2]=buffer[6];
    								state[0]=buffer[7];
    								state[1]=buffer[8];
    									printf("Code materiel telecommande: %02x%02x%02x  - etat :%02x%02x\n",buffer[4],buffer[5],buffer[6],buffer[7],buffer[8]);
    							}
                            }
    				     }
    			         //   for (i=0;i<Nbr; i++)
    				       //    printf("%02x ",buffer[i]);
                         //}
    /*            
                     if (buffer[0]=='1')
                       {
                         //sock_err = listen (sock, 5);
                         puts("Saisir une lettre")      ;    
                         scanf("%s", &buffer);
                          sock_err = send(csock, buffer, sizeof(buffer), 0);
     
                            if (sock_err != SOCKET_ERROR)
                            printf("Chaine envoyée : %s\n", buffer);
                            else puts("error");
                     }
                     else
                         puts("Oh no!");
    */
    				   }
     
                     }
                     while (finish == 1);
    			  }
    			  else
    				  printf("Failed sending command\n");
            }
    Comment retranscrir ce code sous VB ?( si c'est possible ^^' biensur...)

    _________________________________________________________________
    K.Bouhara
    Stagiaire : ESECO SYSTEMS
    Web3.0 and Web4.0 appliances for videosurveillance, security and risk protection

Discussions similaires

  1. Probleme client socket
    Par BOUBOU81 dans le forum C++Builder
    Réponses: 7
    Dernier message: 19/04/2010, 21h03
  2. un Tserversocket pour plusieurs clients socket?
    Par andyafrique dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/10/2006, 21h02
  3. probleme d'application client-serveur en vb6 et SQL server
    Par maxtin dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/08/2006, 14h19
  4. Client-serveur avec VB6 inside
    Par kremvax dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/11/2005, 13h08
  5. Réponses: 9
    Dernier message: 17/08/2004, 16h16

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