OVH Cloud OVH Cloud

recuperer les données de la fonction data arrival

4 réponses
Avatar
john.ambou
Bonjour,

Je d=E9veloppe une application qui se sert des sockets et j'aimerais
pouvoir recuperer les donn=E9es se trouvant dans la fonction
data_arrival.

Public sub data_arrival(byval bytes as long)
dim data
winsock1.getdata data
end sub

Je pense qu'il faudrai transformer la fonction ci dessus en fonction
afin de pouvoir renvoyer le tableau dans mon programme lorsque
j'appelerais la fonction data arrival mais comment faut t'il faire ?


Quelqu'un peut il m'aider svp ?

Merci=20
Johnson

4 réponses

Avatar
Jacques93
Bonjour john.ambou,
a écrit :
Bonjour,

Je développe une application qui se sert des sockets et j'aimerais
pouvoir recuperer les données se trouvant dans la fonction
data_arrival.

Public sub data_arrival(byval bytes as long)
dim data
winsock1.getdata data
end sub

Je pense qu'il faudrai transformer la fonction ci dessus en fonction
afin de pouvoir renvoyer le tableau dans mon programme lorsque
j'appelerais la fonction data arrival mais comment faut t'il faire ?


Quelqu'un peut il m'aider svp ?

Merci
Johnson




Tu ne peux pas modifier la déclaration d'une procédure événementielle,
sous peine d'avoir une erreur :

Erreur de compilation :
La déclaration de la procédure ne correspond pas à la description de
l'événement ou de la procédure du même nom.


Par ailleurs, même s'il est possible d'appeler une procédure
d'événement, cela ne servirait à rien ici. Comment peux tu déterminer
que des données sont disponibles. La procédure est appelée à ce moment là.

Une solution est de déclarer ton buffer de réception au niveau global,
et non pas en local dans la procedure.

NB: en déclarant Dim data, tu ne types pas la variable, elle est donc de
type Variant (c'est peut être voulu)


--
Cordialement,

Jacques.
Avatar
john.ambou
Merci de ton aide
Avatar
john.ambou
Bonjour ,
j'ai testé votre et plusieurs autre cas que voici mais aucun ne
fonctionne pouvez vous m'aidez ?

J'utilise une aplication avec winsock.
je souhaite envoyer un paquet avec la commande send vers mon serveur je
veux ensuite récupere un ACK pour me dire que mon paquet a bien été
recu voici mon code

1 essai :
dim buffer(4) as byte
dim buffer1
buffer(3) = 1
Winsock1.send buffer
'une fois que mon serveur a recu mon buffer mon il doit simplement
mettre la valeur 2 dans le buffer qu'il va me renvoyer je relit donc
ensuite les données

winsock1.getdata buffer1
'je fais ensuite une condition qui me montrera que ce que je fais est
correcte

if buffer1(3) = 2 then
MsgBox ("reception ok")

Je trouve l'erreur 9 "subscript out of range"

2e essai :
dim buffer(4) as byte
dim buffer1
buffer(3) = 1
Winsock1.send buffer
'une fois que mon serveur a recu mon buffer mon il doit simplement
mettre la valeur 2 dans le buffer qu'il va me renvoyer je relit donc
ensuite les données

J'utilise ensuite l'évenement data arrival afin de récuperer les
données mais mon probleme est que je ne peux récuperer les données
de ce sub
(j'ai essayé de transformer ce sub en fonction mais on ne peut y
toucher, j'ai aussi une nouvelle fonction :

public function data_arrival ()
dim data
winsock1.getdata data
data_arrival data
end function

ensuite dans mon programme principale je recupere le tableau mais
lorsque j'esssaye de lire data(3) j'ai l'erreur 9 "subscript out
range")

3 essai :
J'ai réessayer la premiere methode en déclarant data en variable
globale mais ceci ne fonctionne pas non plus.

Avez vous une solution a me proposer ?

Merci
Johnson
Avatar
jm
wrote in message
>news:
..
Avez vous une solution a me proposer ?



Hello,

il me semble que le plus raisonnable est de commencer par
lire un bon livre sur VB puis de lire la documentation en
ligne.

La plupart de tes problèmes viennent simplement d'un mauvais
usage du langage.

Exemple, pris dans ton code:

Dim buffer1

msgbox buffer1(3)

1) déclarée comme cela, buffer1 est un variant
tu essaies d'accéder à l'élément 3, ce qui ne va pas.
tu as donc une erreur "Out of range"


Version correcte:
Dim buffer1(4) as Byte

msgbox Buffer1(3)

Toutes tes erreurs sont du même genre, donc:
- lire la doc pour voir l'emploi de Dim
- Déclarer toutes les variables en les typant
- Mettre Option Explicit en tête de Form
- Lire exhaustivement la doc de Winsock
- Consulter du code existant utilisant winsock

Si tu suis ces 5 conseils, tous tes problèmes se
règleront comme par magie :-)

N'hésite pas après avoir suivi ces 5 étapes à revenir
poser des questions!

Amicalement,

--
Jean-marc