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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    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 : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    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
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    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