Wsock objet

peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012 - 3 déc. 2007 à 10:34
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 4 déc. 2007 à 09:57
Bonjour,
Dans l'aide VB c'est noté que l'on doit créer un tableau d'octet pour passer des data avec Wsock.sendata.
Je voudrai passé une instance de classe (un objet quoi...)
Mais là je bute totalement,
A l'aide !!

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 déc. 2007 à 14:01
'lut Peug,

il va pas te laisser faire...
faudrait passer une reference vers ton objet (en volant une reference)

genre:
Dim MyRef As Long
CopyMemory MyRef, ObjPtr(MonObj), 4

ensuite, faudra etre en local, et encore, je ne sais pas si les references sont propres au systeme ou au process...

en gros, c'est pas gagné.

Pourrais tu nous en dire davantage ?

(une solution pourrait etre un serveurx ActiveX, avec inscritpion dans la ROT, et du coup, un GetObject(,"MonAppli.MonObjet") et hop !)
0
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012
3 déc. 2007 à 14:10
La finalité est de faire un soft sur un serveur et plusieurs poste client.
Les données sont dans une collection que le serveur enregistre les client créer des item...

ou encore je pourrais faire dans la classe une sérialisation maison et le serveur dé-sérialisarai...
chaque item est un objet d'une classe avec dedans des propriétés comme des Integer, string, date etc...

Basiquement je pensais envoyer les paramètres comme en HTML... &dat="12/2/2008"&id=3&...
mais je pensais que passer l'item serait plus optimisé donc plus rapide.

Mais sinon dans un autre cas où le serveur stock dans une BDD qu'envoi alors les clients comme données ? tout reste en String ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 déc. 2007 à 16:03
l'usage d'une base de données me semble en effet indiqué...
0
peug Messages postés 232 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 5 octobre 2012
3 déc. 2007 à 17:19
Voici mon idée pour le client/serveur afin de passer un flux pour une item de classe :

class1.cls :
Option Explicit


Public ID As Long
Public Note As String
Public Valeur As Integer
Public dat As Date


Public Function Serialize() As String
    Dim sFlux As String
    sFlux = ID & Chr(0)
    sFlux = sFlux & Trim$(Note) & Chr(0)
    sFlux = sFlux & Valeur & Chr(0)
    sFlux = sFlux & dat
End Function


Public Function UnSerialize(ByVal sFlux As String) As Class1
    Dim tb() As String
    tb = Split(sFlux, Chr(0))
   
    UnSerialize.ID = tb(0)
    UnSerialize.Note = tb(1)
    UnSerialize.Valeur = Val(tb(2))
    UnSerialize.dat = CDate(tb(3))
End Function

...

Coté client :
set obj=col.item(x)
Puis wsock.sendata obj.Serialize
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 déc. 2007 à 09:57
oui, si tu sérialize, ca colle... ca ira bien.

Public Function Serialize() As String
Dim sFlux As String
sFlux = ID & Chr(0)
sFlux = sFlux & Trim$(Note) & Chr(0)
sFlux = sFlux & Valeur & Chr(0)
sFlux = sFlux & dat
End Function

donnerait :

Public Function Serialize() As String
Serialize= ID & vbNullChar & _
Trim$(Note) & vbNullChar & _
Valeur & vbNullChar & _
dat
End Function

et lors du Unserialize, pense a vérifier ta chaine de caractère...
que ce soit bien le resultat du Serialize d'une instance de Class1
0
Rejoignez-nous