Comment envoyer tout les donnée compléte

Résolu
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 - 18 sept. 2011 à 10:53
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 - 15 oct. 2011 à 20:01
Bonjour voila depuis quelque jour j'ai des problème a cause des winsock car il n’envoie pas a tout le monde toutes les donnée de connexion j'aimerais savoir comment je peut faire pour que toutes les donnée soit envoyer Correctement

46 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 oct. 2011 à 14:14
Bonjour,

cdc = Split(rsck, "|")
Donc ta ligne ne comporte pas assez de séparateur, c'est à toi de gérer ce cas.
Avec par exemple UBound pour éviter l'erreur.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 oct. 2011 à 11:30
Bonjour,

Avant de récupérer une donnée, vérifie systématiquement si la longueur est bonne.

Par exemple avec une fonction :
Public Function GetField(byref ptFields() as string,byval pFieldIndex) as String
    If pFieldIndex>UBound(ptFields) Then
        GetField=""
    Else
        GetField=ptFields(pFieldIndex)
    End if
end function


Puis lors des appels :
pseudo = cdc(0)
devient :
pseudo=GetField(cdc,0)

Mon site
3
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
11 oct. 2011 à 12:55
Salut j'ai mit sa dans un module :
Public Function GetField(ByRef ptFields() As String, ByVal pFieldIndex) As String
    If pFieldIndex > UBound(ptFields) Then
        GetField = ""
    Else
        GetField = ptFields(pFieldIndex)
    End If
End Function


est j'ai changer par sa
'--------------login------
If Right(rsck, 6) = "/login" Then
cdc = Split(rsck, "|")
pseudo = GetField(cdc, 0)
id = GetField(cdc, 1)
slot = GetField(cdc, 2)
dragon = GetField(cdc, 3)
force = GetField(cdc, 4)
defence = GetField(cdc, 5)
pv = GetField(cdc, 6)
pm = GetField(cdc, 7)
pa = GetField(cdc, 8)
lvl = GetField(cdc, 9)
xp = GetField(cdc, 10)
apparence = GetField(cdc, 11)
inscrit = GetField(cdc, 12)
connexion = GetField(cdc, 13)
dramas = GetField(cdc, 14)
sexe = GetField(cdc, 15)
element = GetField(cdc, 16)
Form3.Label22.Caption = pseudo
If apparence = "1" Then
Form3.Image10.Visible = True
ElseIf apparence = "0" Then
Form3.Image11.Visible = True
ElseIf apparence = "2" Then
Form3.Image7.Visible = True
ElseIf apparence = "3" Then
Form3.Image6.Visible = True
ElseIf apparence = "4" Then
Form3.Image9.Visible = True
ElseIf apparence = "5" Then
Form3.Image8.Visible = True
End If
If sexe = "1" Then
Form3.Image4.Visible = True
ElseIf sexe = "2" Then
Form3.Image5.Visible = True
End If
If element = "1" Then
Form3.Image13.Visible = True
ElseIf element = "2" Then
Form3.Image12.Visible = True
ElseIf element = "3" Then
Form3.Image14.Visible = True
ElseIf element = "4" Then
Form3.Image15.Visible = True
ElseIf element = "5" Then
Form3.Image16.Visible = True
End If
Form3.Label13.Caption = force
Form3.Label14.Caption = defence
Form3.Label15.Caption = pv
Form3.Label16.Caption = pa
Form3.Label17.Caption = pm
Form3.Label18.Caption = lvl
Form3.Label19.Caption = xp
Form3.Label20.Caption = dramas
Form3.Show
Form1.Visible = False
End If


C'est correcte ??
3
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
11 oct. 2011 à 21:46
si je fait ceci le serveur envoye "/login" & "les donnée ................." & "login/"
tu coups je fait dans le client :

If left (rsck,6) = "/login" then
cdc = split (rsck,"|") 
If right (rsck,6) = "login/" then 
cdc(0) = pseudo 
cdc(1) = test 
etc ...

Ce code pourrez t'il fonctionné ??
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
11 oct. 2011 à 22:11
Bonjour,

Il se peut que le socket mette un peu de temps avant de tout envoyer/recevoir, vérifie l'intégrité en utilisant une variable mémorisant les données en attente de traitement, puis une fois tout reçu, tu traites.

Genre :
Dim MonBuffer as string

Et lors de la réception :
MonBuffer=MonBuffer & MaReception

If (J'ai bien tout) Then
Traiter MonBuffer
MonBuffer=""
Enf If

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
15 oct. 2011 à 13:42
Bonjour,

Il faut que tu mette des délimiteurs à ta trame d'information, ces délimiteurs ne doivent pas se retrouver dans des données contenues dans la trame.

Tu peux par exemple utiliser des caractères spéciaux Chr$(01) et Chr$(02) pour le début et la fin.
Ensuite, tu teste la présence des ces 2 délimiteurs pour savoir si les données sont complètes.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
18 sept. 2011 à 10:53
Donc j'avez penser au sendcomplet mais je ne sais l'utilisé si quelqu'un peut m'aider
0
Utilisateur anonyme
18 sept. 2011 à 12:57
Salut tony,

As-tu regardé dans notre liste de codes disponibles (recherche> Tous les codes sauf .net)?

Moi j'ai déjà trouvé ça:
http://www.vbfrance.com/codes/MODULE-WINSOCK-GESTIONNAIRE-SOCKETS-WSOCK32-DLL_3800.aspx


CF2i - Guadeloupe
Ingénierie Informatique
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
18 sept. 2011 à 13:19
Bonjour,

En VB6, il faut mettre un DoEvents entre les envois sur Winsock afin de faire l'envoi.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 sept. 2011 à 23:37
Salut

De quelle taille sont les données que tu expédies ?
Es-tu sûr que ce soit l'émetteur qui n'envoie pas tout et pas la réception qui n'est pas correctement faite ?

Pour te répondre, il faut avoir plus d'info sur ta méthode d'envoi et de réception

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
7 oct. 2011 à 21:55
Salut le problème je pense vien pas de l'envoie mais surtout quand il recoie les donnée doevents marche aussi pour quand il recoi les donnée
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
7 oct. 2011 à 21:58
voici le code coter serveur
'--------------Login------------------
If Right(rsck, 6) = "/login" Then
ergt1 = String(255, 0)
ergt2 = String(255, 0)
ergt3 = String(255, 0)
ergt4 = String(255, 0)
ergt5 = String(255, 0)
ergt6 = String(255, 0)
ergt7 = String(255, 0)
ergt8 = String(255, 0)
ergt9 = String(255, 0)
ergt10 = String(255, 0)
ergt11 = String(255, 0)
ergt12 = String(255, 0)
ergt13 = String(255, 0)
ergt14 = String(255, 0)
ergt15 = String(255, 0)
ergt16 = String(255, 0)
ergt17 = String(255, 0)
ergt18 = String(255, 0)
ergt19 = String(255, 0)
cdc = Split(rsck, "|")
If Dir$(App.Path & "\Accounts" & cdc(0) & ".ini") = vbNullString Then
'existe pas
Winsock1(Index).SendData "/erlog"
Else
a = GetPrivateProfileString(App.Title, "mdp", "default", ergt1, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
Label4.Caption = cdc(1)
Label3.Caption = ergt1
If Label3.Caption = Label4.Caption Then
rsctxt.Text = Winsock1(Index).Index & " - " & cdc(0) & " Vien de se connecté a Dramen" & vbCrLf & rsctxt.Text
id = Winsock1(Index).Index

a = GetPrivateProfileString(App.Title, "dragonnom", "default", ergt2, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "couleur", "default", ergt3, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "element", "default", ergt4, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "sexe", "default", ergt5, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "force", "default", ergt6, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "defense", "default", ergt7, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "pv", "default", ergt8, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "dramas", "default", ergt9, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "level", "default", ergt10, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "dmdcbt", "default", ergt11, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "nomcbt", "default", ergt12, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "inscrit", "default", ergt13, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "connexion", "default", ergt14, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "jeux", "default", ergt15, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "promenade", "default", ergt16, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "deplacement", "default", ergt17, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "boitltr", "default", ergt18, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
a = GetPrivateProfileString(App.Title, "boitltrmsg", "default", ergt19, 255, App.Path & "\Accounts" & cdc(0) & ".ini")
Winsock1(Index).SendData ergt2 & "|" & ergt3 & "|" & ergt4 & "|" & ergt5 & "|" & ergt6 & "|" & ergt7 & "|" & ergt8 & "|" & ergt9 & "|" & ergt10 & "|" & ergt11 & "|" & ergt12 & "|" & ergt13 & "|" & ergt14 & "|" & ergt15 & "|" & ergt16 & "|" & ergt17 & "|" & ergt18 & "|" & ergt19 & "|" & id & "|" & "/login"
Else
Winsock1(Index).SendData "/erlog"
End If
End If
End If


et voici le code du coter client :
'-----------login-----
If Right(rsck, 6) = "/login" Then
cdc = Split(rsck, "|")
pseudo = Text1.Text
inscrit = cdc(11)
connexion = cdc(12)
dragon = cdc(0)
couleur = cdc(1)
element = cdc(2)
sexe = cdc(3)
force = cdc(4)
defense = cdc(5)
pv = cdc(6)
dramas = cdc(7)
level = cdc(8)
dmdcbt = cdc(9)
nomcbt = cdc(10)
jeux = cdc(13)
promenade = cdc(14)
deplacement = cdc(15)
lettre = cdc(16)
lettre2 = cdc(17)
id = cdc(18)
Form1.Visible = False
Form5.Label2.Caption = "Transfere du joueur " & pseudo & " Avec sont Dragon " & dragon
Form5.Label2.Caption = Form5.Label2.Caption + ", Transfere en cours dans le monde D'Asteria..."
If couleur = "1" Then
Form5.WindowsMediaPlayer1.URL = App.Path & "\Vidéo" & "tp4.wmv"
ElseIf couleur = "2" Then
Form5.WindowsMediaPlayer1.URL = App.Path & "\Vidéo" & "tp2.wmv"
ElseIf couleur = "3" Then
Form5.WindowsMediaPlayer1.URL = App.Path & "\Vidéo" & "tp1.wmv"
ElseIf couleur = "4" Then
Form5.WindowsMediaPlayer1.URL = App.Path & "\Vidéo" & "tp5.wmv"
ElseIf couleur = "5" Then
Form5.WindowsMediaPlayer1.URL = App.Path & "\Vidéo" & "tp3.wmv"


End If
 Form4.Label19.Caption = promenade
 Form4.Label20.Caption = jeux
 Form4.Label21.Caption = deplacement
 Form4.Label2.Caption = pseudo
 Form4.Label1.Caption = dragon
Form4.Label8.Caption = level
 Form4.Label9.Caption = force
 Form4.Label10.Caption = defense
 Form4.Label11.Caption = pv
 Form4.Label12.Caption = dramas
 Form4.Label14.Caption = connexion
 Form4.Label17.Caption = inscrit
 Form4.Label23.Caption = id

If couleur = "1" Then
Form4.Image1.Visible = True
ElseIf couleur = "2" Then
Form4.Image8.Visible = True
ElseIf couleur = "3" Then
Form4.Image6.Visible = True
ElseIf couleur = "4" Then
Form4.Image7.Visible = True
ElseIf couleur = "5" Then
Form4.Image5.Visible = True
End If
If element = "1" Then
Form4.Image9.Visible = True
ElseIf element = "2" Then
Form4.Image3.Visible = True
ElseIf element = "3" Then
Form4.Image10.Visible = True
ElseIf element = "4" Then
Form4.Image11.Visible = True
ElseIf element = "5" Then
Form4.Image12.Visible = True
End If
If sexe = "1" Then
Form4.Image2.Visible = True
Else
Form4.Image13.Visible = True
End If
Form5.Show
End If
'-------------------
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 oct. 2011 à 22:02
Bonjour,

Je n'ai pas compris la question.
Peux-tu remettre en clair ton message ?

"Avec sont Dragon" Mes yeux ...

Je pense que ton code est facilement factorisable, avec des tableaux et des structures.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
7 oct. 2011 à 22:40
Voila je t'explique en bref,la personne entre le login et mot de passe puis une fois valider les donnée ini sont charger puis envoyer une fois envoyer, quand le client recoi sa sa met indice hors de la plage car les donnée sont pas tous envoyer et le tableaux et vide a moitier plien voila tout
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 oct. 2011 à 23:09
Bonjour,

Sur quelle ligne l'erreur ?
Essayes de faire un effort au niveau de la grammaire/orthographe, ça rend la lecture plus difficile.
As-tu regardé en pas à pas pour comprendre ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
8 oct. 2011 à 11:00
Désoler la ligne en question est au niveaux du client ici
pv = cdc(6)
indice en dehors de la plage tout simplement car le serveur ou le client na pas reçu tout les donnée correctement mais j'ai fait un test et ci on met je met un msgbox ben bizarrement il se connecte donc je pense c'est que le client recoi mais essaye directement de mettre dans le tableau ce qui provoque une erreur
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
10 oct. 2011 à 22:04
Salut j'ai toujours mon probleme j'utilise se code maitenant mais rine a faire sa bugs toujours .
'--------------login------
If Right(rsck, 6) = "/login" Then
cdc = Split(rsck, "|")
For i = 0 To UBound(cdc)
Next i
pseudo = cdc(0)
id = cdc(1)
slot = cdc(2)
dragon = cdc(3)
force = cdc(4)
defence = cdc(5)
pv = cdc(6)
pm = cdc(7)
pa = cdc(8)
lvl = cdc(9)
xp = cdc(10)
apparence = cdc(11)
inscrit = cdc(12)
connexion = cdc(13)
dramas = cdc(14)
sexe = cdc(15)
element = cdc(16)
Form3.Label22.Caption = pseudo
If apparence = "1" Then
Form3.Image10.Visible = True
ElseIf apparence = "0" Then
Form3.Image11.Visible = True
ElseIf apparence = "2" Then
Form3.Image7.Visible = True
ElseIf apparence = "3" Then
Form3.Image6.Visible = True
ElseIf apparence = "4" Then
Form3.Image9.Visible = True
ElseIf apparence = "5" Then
Form3.Image8.Visible = True
End If
If sexe = "1" Then
Form3.Image4.Visible = True
ElseIf sexe = "2" Then
Form3.Image5.Visible = True
End If
If element = "1" Then
Form3.Image13.Visible = True
ElseIf element = "2" Then
Form3.Image12.Visible = True
ElseIf element = "3" Then
Form3.Image14.Visible = True
ElseIf element = "4" Then
Form3.Image15.Visible = True
ElseIf element = "5" Then
Form3.Image16.Visible = True
End If
Form3.Label13.Caption = force
Form3.Label14.Caption = defence
Form3.Label15.Caption = pv
Form3.Label16.Caption = pa
Form3.Label17.Caption = pm
Form3.Label18.Caption = lvl
Form3.Label19.Caption = xp
Form3.Label20.Caption = dramas
Form3.Show
Form1.Visible = False
End If
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 oct. 2011 à 22:15
Bonjour,

"Salut j'ai toujours mon probleme j'utilise se code maitenant mais rine a faire sa bugs toujours."

En français :
"Salut, j'ai toujours mon problème j'utilise se code maintenant mais rien a faire ça bugs toujours."

Peux-tu détailler ce "bug" ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
10 oct. 2011 à 22:24
Erreur d'excution "9" indice hors de la plage ou sinon des fois sur d'autre c'est erreur "13" incompatible
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 oct. 2011 à 22:43
Bonjour,

Sur quelle(s) ligne(s), et quelles sont les données présentes dans les éléments de la ligne de code ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous