Bonjour tout le monde,
Actuellement je travail avec les sockets pour un transfert de fichier client
à client pour une de nos applications, je voudrais transmettre des
structures par le biais des sockets donc j'utilise transfert pour remplir
mon buffer
Transfert(&Buffer,&TrameListFile,Dimension (TrameListFile))
Avant celà j'initialise mon Buffer avec : Buffer=Répète(" ",Dimension
(TrameListFile))
Lorsque j'envoie sur mon socket avec SocketEcrit("Client",Buffer) j'ai une
erreur Access violation (GPF).
J'utilise le mode de transmission par defaut, si je stock une chaine dans le
buffer ça passe sans problème.
Voilà un exemple de structure utilisé:
TTrameListFile est une structure
TailledeLaTrame est un entier
TypedeTrame est un entier=1
Nomdefichier est une chaîne ASCIIZ sur 255
Hach est une chaîne ASCIIZ sur 22
Taille est un entier
FIN
Je suppose que je m'y prend mal c'est la première fois que j'utilise les
socket sous windev (je pense que çelà vient de ma façon de remplir mon
buffer)
Donc si quelqu'un à une solution je suis ouvert à toute proposition.
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en passer ce serais pas mal car je vais avoir une trentaine de trames et il faudrais que je le fasse coté client et coté serveur bref c'est pas terrible mais je garde cette solution dans le pire des cas.
Si la structure n'est pas acceptée, je ne pense pas que tu ai d'autres solutions :-( Si tu en trouves une, fais-le moi savoir, ca peut être utile ;-)
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Sylvain a formulé ce lundi :
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en passer
ce serais pas mal car je vais avoir une trentaine de trames et il faudrais
que je le fasse coté client et coté serveur bref c'est pas terrible mais je
garde cette solution dans le pire des cas.
Si la structure n'est pas acceptée, je ne pense pas que tu ai d'autres
solutions :-(
Si tu en trouves une, fais-le moi savoir, ca peut être utile ;-)
A+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en passer ce serais pas mal car je vais avoir une trentaine de trames et il faudrais que je le fasse coté client et coté serveur bref c'est pas terrible mais je garde cette solution dans le pire des cas.
Si la structure n'est pas acceptée, je ne pense pas que tu ai d'autres solutions :-( Si tu en trouves une, fais-le moi savoir, ca peut être utile ;-)
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Sylvain
Et voici la solution non sans mal ^^ On laisse tomber le buffer et on passe tout par une chaine en binaire...
Ch est une chaine Ch=Répète(" ",Dimension(TrameListFile)) // je réserve au cas où vu que je ne sais pas ce que fait exactement transfert Transfert(&Ch,&TrameListFile,Dimension(TrameListFile)) SocketEcrit("Client",Ch)
de l'autre coté: sMessage = SocketLit(sNomConnexion,Faux,2000) Transfert(&Trame,&sMessage,Dimension(Trame)) Info(Trame:TypedeTrame,Trame:Nomdefichier,Trame:Hach,Trame:Taille )
Et voilà je réceptionne belle et bien ma trame correctement :)
Cordialement Sylvain L.
Et voici la solution non sans mal ^^
On laisse tomber le buffer et on passe tout par une chaine en binaire...
Ch est une chaine
Ch=Répète(" ",Dimension(TrameListFile)) // je réserve au cas où vu que je ne
sais pas ce que fait exactement transfert
Transfert(&Ch,&TrameListFile,Dimension(TrameListFile))
SocketEcrit("Client",Ch)
de l'autre coté:
sMessage = SocketLit(sNomConnexion,Faux,2000)
Transfert(&Trame,&sMessage,Dimension(Trame))
Info(Trame:TypedeTrame,Trame:Nomdefichier,Trame:Hach,Trame:Taille )
Et voilà je réceptionne belle et bien ma trame correctement :)
Et voici la solution non sans mal ^^ On laisse tomber le buffer et on passe tout par une chaine en binaire...
Ch est une chaine Ch=Répète(" ",Dimension(TrameListFile)) // je réserve au cas où vu que je ne sais pas ce que fait exactement transfert Transfert(&Ch,&TrameListFile,Dimension(TrameListFile)) SocketEcrit("Client",Ch)
de l'autre coté: sMessage = SocketLit(sNomConnexion,Faux,2000) Transfert(&Trame,&sMessage,Dimension(Trame)) Info(Trame:TypedeTrame,Trame:Nomdefichier,Trame:Hach,Trame:Taille )
Et voilà je réceptionne belle et bien ma trame correctement :)