sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant()
sInfoUser, sOK est une chaîne
// Tentative de connexion
Message("Connexion au serveur.")
SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000)
SI ErreurDétectée ALORS
// Erreur de connexion
Erreur("Impossible de joindre le serveur",ErreurInfo());Message()
RENVOYER Faux
SINON
HLit(INSCRIT,1)
sInfo est une chaîne
sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4
SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000)
SI sOK = "103 OK3" ALORS
SocketFerme(sNomSocket)
Sablier(Faux)
FEN_ACCOUNT..Plan = 5
RENVOYER Vrai
SINON
Erreur("Une erreur a été détectée pendant la récupération des données.")
FIN
FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000)
SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS
nIdUser = sInfo[[5 A Position(sInfo,"$")-1]]
sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers
nPosdeb1 = Position(sLogin,"&",1)
nPosdeb2 = Position(sLogin,"&",nPosdeb1+1)
nPosdeb3 = Position(sLogin,"&",nPosdeb2+1)
nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]]
bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]]
bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]]
bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]]
bufImage4 = sLogin[[nPosdeb4+1 A]]
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() sInfoUser, sOK est une chaîne // Tentative de connexion Message("Connexion au serveur.") SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) SI ErreurDétectée ALORS // Erreur de connexion Erreur("Impossible de joindre le serveur",ErreurInfo());Message() RENVOYER Faux SINON HLit(INSCRIT,1) sInfo est une chaîne sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000) SI sOK = "103 OK3" ALORS SocketFerme(sNomSocket) Sablier(Faux) FEN_ACCOUNT..Plan = 5 RENVOYER Vrai SINON Erreur("Une erreur a été détectée pendant la récupération des données.") FIN FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000) SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers nPosdeb1 = Position(sLogin,"&",1) nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]] bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] bufImage4 = sLogin[[nPosdeb4+1 A]]
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant()
sInfoUser, sOK est une chaîne
// Tentative de connexion
Message("Connexion au serveur.")
SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000)
SI ErreurDétectée ALORS
// Erreur de connexion
Erreur("Impossible de joindre le serveur",ErreurInfo());Message()
RENVOYER Faux
SINON
HLit(INSCRIT,1)
sInfo est une chaîne
sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4
SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000)
SI sOK = "103 OK3" ALORS
SocketFerme(sNomSocket)
Sablier(Faux)
FEN_ACCOUNT..Plan = 5
RENVOYER Vrai
SINON
Erreur("Une erreur a été détectée pendant la récupération des données.")
FIN
FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000)
SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS
nIdUser = sInfo[[5 A Position(sInfo,"$")-1]]
sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers
nPosdeb1 = Position(sLogin,"&",1)
nPosdeb2 = Position(sLogin,"&",nPosdeb1+1)
nPosdeb3 = Position(sLogin,"&",nPosdeb2+1)
nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]]
bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]]
bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]]
bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]]
bufImage4 = sLogin[[nPosdeb4+1 A]]
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() sInfoUser, sOK est une chaîne // Tentative de connexion Message("Connexion au serveur.") SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) SI ErreurDétectée ALORS // Erreur de connexion Erreur("Impossible de joindre le serveur",ErreurInfo());Message() RENVOYER Faux SINON HLit(INSCRIT,1) sInfo est une chaîne sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000) SI sOK = "103 OK3" ALORS SocketFerme(sNomSocket) Sablier(Faux) FEN_ACCOUNT..Plan = 5 RENVOYER Vrai SINON Erreur("Une erreur a été détectée pendant la récupération des données.") FIN FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000) SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers nPosdeb1 = Position(sLogin,"&",1) nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]] bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] bufImage4 = sLogin[[nPosdeb4+1 A]]
SectionCritiqueDébut("AA") SI HModifie(INSCRIT)= Vrai ALORS SocketEcrit(sNomCanal,"103 OK3") SocketFerme(sNomCanal) SectionCritiqueFin("AA")
Si je récupère bien l'annonce, les images ne s'enregistrent pas.
Une idée pour me sortir de la tourmente ?
Merci d'avance
paratge
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je utiliser pour être certain qu'il ne sera pas dans les chaines envoyées, j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un des buffers.
Cordialement
patrice a écrit :
faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca tronque) faut utiliser des buffers
"paratge" a écrit dans le message de news:46a869f2$0$27389$
Bonjour,
Je reviens sur mon problème, car je sèche lamentablement :
j'ai une appli cliente qui envoie des informations sur un serveur via sockets, et biensûr, un serveur qui les réceptionne.
Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en mémo binaire, et là, ça coince.
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() sInfoUser, sOK est une chaîne // Tentative de connexion Message("Connexion au serveur.") SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) SI ErreurDétectée ALORS // Erreur de connexion Erreur("Impossible de joindre le serveur",ErreurInfo());Message() RENVOYER Faux SINON HLit(INSCRIT,1) sInfo est une chaîne sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000) SI sOK = "103 OK3" ALORS SocketFerme(sNomSocket) Sablier(Faux) FEN_ACCOUNT..Plan = 5 RENVOYER Vrai SINON Erreur("Une erreur a été détectée pendant la récupération des données.") FIN FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000) SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers nPosdeb1 = Position(sLogin,"&",1) nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]] bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] bufImage4 = sLogin[[nPosdeb4+1 A]]
SectionCritiqueDébut("AA") SI HModifie(INSCRIT)= Vrai ALORS SocketEcrit(sNomCanal,"103 OK3") SocketFerme(sNomCanal) SectionCritiqueFin("AA")
Si je récupère bien l'annonce, les images ne s'enregistrent pas.
Une idée pour me sortir de la tourmente ?
Merci d'avance
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon
code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je
utiliser pour être certain qu'il ne sera pas dans les chaines envoyées,
j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un
des buffers.
Cordialement
patrice a écrit :
faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca
tronque)
faut utiliser des buffers
"paratge" <jjb@2jbconcepts.fr> a écrit dans le message de
news:46a869f2$0$27389$ba4acef3@news.orange.fr...
Bonjour,
Je reviens sur mon problème, car je sèche lamentablement :
j'ai une appli cliente qui envoie des informations sur un serveur via
sockets, et biensûr, un serveur qui les réceptionne.
Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en
mémo binaire, et là, ça coince.
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant()
sInfoUser, sOK est une chaîne
// Tentative de connexion
Message("Connexion au serveur.")
SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000)
SI ErreurDétectée ALORS
// Erreur de connexion
Erreur("Impossible de joindre le serveur",ErreurInfo());Message()
RENVOYER Faux
SINON
HLit(INSCRIT,1)
sInfo est une chaîne
sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4
SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000)
SI sOK = "103 OK3" ALORS
SocketFerme(sNomSocket)
Sablier(Faux)
FEN_ACCOUNT..Plan = 5
RENVOYER Vrai
SINON
Erreur("Une erreur a été détectée pendant la récupération des données.")
FIN
FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000)
SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS
nIdUser = sInfo[[5 A Position(sInfo,"$")-1]]
sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers
nPosdeb1 = Position(sLogin,"&",1)
nPosdeb2 = Position(sLogin,"&",nPosdeb1+1)
nPosdeb3 = Position(sLogin,"&",nPosdeb2+1)
nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]]
bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]]
bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]]
bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]]
bufImage4 = sLogin[[nPosdeb4+1 A]]
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je utiliser pour être certain qu'il ne sera pas dans les chaines envoyées, j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un des buffers.
Cordialement
patrice a écrit :
faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca tronque) faut utiliser des buffers
"paratge" a écrit dans le message de news:46a869f2$0$27389$
Bonjour,
Je reviens sur mon problème, car je sèche lamentablement :
j'ai une appli cliente qui envoie des informations sur un serveur via sockets, et biensûr, un serveur qui les réceptionne.
Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en mémo binaire, et là, ça coince.
sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() sInfoUser, sOK est une chaîne // Tentative de connexion Message("Connexion au serveur.") SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) SI ErreurDétectée ALORS // Erreur de connexion Erreur("Impossible de joindre le serveur",ErreurInfo());Message() RENVOYER Faux SINON HLit(INSCRIT,1) sInfo est une chaîne sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
sOK = SocketLit(sNomSocket,Faux,30000) SI sOK = "103 OK3" ALORS SocketFerme(sNomSocket) Sablier(Faux) FEN_ACCOUNT..Plan = 5 RENVOYER Vrai SINON Erreur("Une erreur a été détectée pendant la récupération des données.") FIN FIN
et le code coté serveur est :
sInfo = SocketLit(sNomCanal,Faux,30000) SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] sLogin = sInfo[[Position(sInfo,"$")+1 A]]
// on détermine les buffers nPosdeb1 = Position(sLogin,"&",1) nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
sAnnonce = sLogin[[ A nPosdeb1-1]] bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] bufImage4 = sLogin[[nPosdeb4+1 A]]
SectionCritiqueDébut("AA") SI HModifie(INSCRIT)= Vrai ALORS SocketEcrit(sNomCanal,"103 OK3") SocketFerme(sNomCanal) SectionCritiqueFin("AA")
Si je récupère bien l'annonce, les images ne s'enregistrent pas.
Une idée pour me sortir de la tourmente ?
Merci d'avance
patrice
pas top non plus. vaut mieux transmettre la longeur puis le buffer comme ca en face, tu lit longueur, puis [longeur] caractères sinon faut prendre un séparateur assez long (au moins une 30 de caractères) pour réduire les chances de le trouver dans le fichier.
"paratge" a écrit dans le message de news:
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je utiliser pour être certain qu'il ne sera pas dans les chaines envoyées, j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un des buffers.
Cordialement
patrice a écrit : > faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca > tronque) > faut utiliser des buffers > > "paratge" a écrit dans le message de > news:46a869f2$0$27389$ >> Bonjour, >> >> Je reviens sur mon problème, car je sèche lamentablement : >> >> j'ai une appli cliente qui envoie des informations sur un serveur via >> sockets, et biensûr, un serveur qui les réceptionne. >> >> Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en >> mémo binaire, et là, ça coince. >> >> mon code coté client est : >> >> IMAGE = SC_SelecteurFichier.SAI_FIC >> HLit(INSCRIT,1) >> gsImage1 = dSauveImageJPEG(IMAGE,enMémoire,60) >> HAttacheMémo(INSCRIT,Image,SC_SelecteurFichier.SAI_FIC,hMémoImg) >> HModifie(INSCRIT) >> >> >> sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() >> sInfoUser, sOK est une chaîne >> // Tentative de connexion >> Message("Connexion au serveur.") >> SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) >> SI ErreurDétectée ALORS >> // Erreur de connexion >> Erreur("Impossible de joindre le serveur",ErreurInfo());Message() >> RENVOYER Faux >> SINON >> HLit(INSCRIT,1) >> sInfo est une chaîne >> sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 >> SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo) >> >> sOK = SocketLit(sNomSocket,Faux,30000) >> SI sOK = "103 OK3" ALORS >> SocketFerme(sNomSocket) >> Sablier(Faux) >> FEN_ACCOUNT..Plan = 5 >> RENVOYER Vrai >> SINON >> Erreur("Une erreur a été détectée pendant la récupération des
données.")
>> FIN >> FIN >> >> et le code coté serveur est : >> >> sInfo = SocketLit(sNomCanal,Faux,30000) >> SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS >> nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] >> sLogin = sInfo[[Position(sInfo,"$")+1 A]] >> >> // on détermine les buffers >> nPosdeb1 = Position(sLogin,"&",1) >> nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) >> nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) >> nPosdeb4 = Position(sLogin,"&",nPosdeb3+1) >> >> sAnnonce = sLogin[[ A nPosdeb1-1]] >> bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] >> bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] >> bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] >> bufImage4 = sLogin[[nPosdeb4+1 A]] >> >> >> >> HLitRecherche(INSCRIT,IDUTILISATEUR,nIdUser) >> INSCRIT.Image = bufImage1 >> INSCRIT.image1 = bufImage2 >> INSCRIT.image2 = bufImage3 >> INSCRIT.image3 = bufImage4 >> INSCRIT.Annonce = sAnnonce >> >> SectionCritiqueDébut("AA") >> SI HModifie(INSCRIT)= Vrai ALORS >> SocketEcrit(sNomCanal,"103 OK3") >> SocketFerme(sNomCanal) >> SectionCritiqueFin("AA") >> >> Si je récupère bien l'annonce, les images ne s'enregistrent pas. >> >> Une idée pour me sortir de la tourmente ? >> >> Merci d'avance > >
pas top non plus.
vaut mieux transmettre la longeur puis le buffer
comme ca en face, tu lit longueur, puis [longeur] caractères
sinon faut prendre un séparateur assez long (au moins une 30 de caractères)
pour réduire les chances de le trouver dans le fichier.
"paratge" <jjb@2jbconcepts.fr> a écrit dans le message de
news:46A8911B.5090009@2jbconcepts.fr...
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon
code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je
utiliser pour être certain qu'il ne sera pas dans les chaines envoyées,
j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un
des buffers.
Cordialement
patrice a écrit :
> faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca
> tronque)
> faut utiliser des buffers
>
> "paratge" <jjb@2jbconcepts.fr> a écrit dans le message de
> news:46a869f2$0$27389$ba4acef3@news.orange.fr...
>> Bonjour,
>>
>> Je reviens sur mon problème, car je sèche lamentablement :
>>
>> j'ai une appli cliente qui envoie des informations sur un serveur via
>> sockets, et biensûr, un serveur qui les réceptionne.
>>
>> Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en
>> mémo binaire, et là, ça coince.
>>
>> mon code coté client est :
>>
>> IMAGE = SC_SelecteurFichier.SAI_FIC
>> HLit(INSCRIT,1)
>> gsImage1 = dSauveImageJPEG(IMAGE,enMémoire,60)
>> HAttacheMémo(INSCRIT,Image,SC_SelecteurFichier.SAI_FIC,hMémoImg)
>> HModifie(INSCRIT)
>>
>>
>> sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant()
>> sInfoUser, sOK est une chaîne
>> // Tentative de connexion
>> Message("Connexion au serveur.")
>> SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000)
>> SI ErreurDétectée ALORS
>> // Erreur de connexion
>> Erreur("Impossible de joindre le serveur",ErreurInfo());Message()
>> RENVOYER Faux
>> SINON
>> HLit(INSCRIT,1)
>> sInfo est une chaîne
>> sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4
>> SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo)
>>
>> sOK = SocketLit(sNomSocket,Faux,30000)
>> SI sOK = "103 OK3" ALORS
>> SocketFerme(sNomSocket)
>> Sablier(Faux)
>> FEN_ACCOUNT..Plan = 5
>> RENVOYER Vrai
>> SINON
>> Erreur("Une erreur a été détectée pendant la récupération des
données.")
>> FIN
>> FIN
>>
>> et le code coté serveur est :
>>
>> sInfo = SocketLit(sNomCanal,Faux,30000)
>> SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS
>> nIdUser = sInfo[[5 A Position(sInfo,"$")-1]]
>> sLogin = sInfo[[Position(sInfo,"$")+1 A]]
>>
>> // on détermine les buffers
>> nPosdeb1 = Position(sLogin,"&",1)
>> nPosdeb2 = Position(sLogin,"&",nPosdeb1+1)
>> nPosdeb3 = Position(sLogin,"&",nPosdeb2+1)
>> nPosdeb4 = Position(sLogin,"&",nPosdeb3+1)
>>
>> sAnnonce = sLogin[[ A nPosdeb1-1]]
>> bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]]
>> bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]]
>> bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]]
>> bufImage4 = sLogin[[nPosdeb4+1 A]]
>>
>>
>>
>> HLitRecherche(INSCRIT,IDUTILISATEUR,nIdUser)
>> INSCRIT.Image = bufImage1
>> INSCRIT.image1 = bufImage2
>> INSCRIT.image2 = bufImage3
>> INSCRIT.image3 = bufImage4
>> INSCRIT.Annonce = sAnnonce
>>
>> SectionCritiqueDébut("AA")
>> SI HModifie(INSCRIT)= Vrai ALORS
>> SocketEcrit(sNomCanal,"103 OK3")
>> SocketFerme(sNomCanal)
>> SectionCritiqueFin("AA")
>>
>> Si je récupère bien l'annonce, les images ne s'enregistrent pas.
>>
>> Une idée pour me sortir de la tourmente ?
>>
>> Merci d'avance
>
>
pas top non plus. vaut mieux transmettre la longeur puis le buffer comme ca en face, tu lit longueur, puis [longeur] caractères sinon faut prendre un séparateur assez long (au moins une 30 de caractères) pour réduire les chances de le trouver dans le fichier.
"paratge" a écrit dans le message de news:
Merci pour ton aide, en fait j'avais oublié quelques chaines dans mon code (la fatigue... certainement ;) )
Par contre, j'envoie 5 buffers en même temps, quel séparateur puis je utiliser pour être certain qu'il ne sera pas dans les chaines envoyées, j'ai choisi "&", mais j'ai peur que ce signe puisse être inclus dans un des buffers.
Cordialement
patrice a écrit : > faut jamais utiliser de chaine avec des données binaire (au moindre 0 ca > tronque) > faut utiliser des buffers > > "paratge" a écrit dans le message de > news:46a869f2$0$27389$ >> Bonjour, >> >> Je reviens sur mon problème, car je sèche lamentablement : >> >> j'ai une appli cliente qui envoie des informations sur un serveur via >> sockets, et biensûr, un serveur qui les réceptionne. >> >> Parmi toutes les infos envoyées, il y a les photos de l'utilisateur en >> mémo binaire, et là, ça coince. >> >> mon code coté client est : >> >> IMAGE = SC_SelecteurFichier.SAI_FIC >> HLit(INSCRIT,1) >> gsImage1 = dSauveImageJPEG(IMAGE,enMémoire,60) >> HAttacheMémo(INSCRIT,Image,SC_SelecteurFichier.SAI_FIC,hMémoImg) >> HModifie(INSCRIT) >> >> >> sNomSocket est une chaîne = "Ann_" + DateDuJour()+Maintenant() >> sInfoUser, sOK est une chaîne >> // Tentative de connexion >> Message("Connexion au serveur.") >> SocketConnecte(sNomSocket,cnPortSocketAjout,gsIpServeur,30000) >> SI ErreurDétectée ALORS >> // Erreur de connexion >> Erreur("Impossible de joindre le serveur",ErreurInfo());Message() >> RENVOYER Faux >> SINON >> HLit(INSCRIT,1) >> sInfo est une chaîne >> sInfo = Annonce+"&"+gsImage1+"&"+gsImage2+"&"+gsImage3+"&"+gsImage4 >> SocketEcrit(sNomSocket,"903 "+gnUser+"$"+sInfo) >> >> sOK = SocketLit(sNomSocket,Faux,30000) >> SI sOK = "103 OK3" ALORS >> SocketFerme(sNomSocket) >> Sablier(Faux) >> FEN_ACCOUNT..Plan = 5 >> RENVOYER Vrai >> SINON >> Erreur("Une erreur a été détectée pendant la récupération des
données.")
>> FIN >> FIN >> >> et le code coté serveur est : >> >> sInfo = SocketLit(sNomCanal,Faux,30000) >> SI sInfo[[A 3]] = "903" ET sInfo <>"" ALORS >> nIdUser = sInfo[[5 A Position(sInfo,"$")-1]] >> sLogin = sInfo[[Position(sInfo,"$")+1 A]] >> >> // on détermine les buffers >> nPosdeb1 = Position(sLogin,"&",1) >> nPosdeb2 = Position(sLogin,"&",nPosdeb1+1) >> nPosdeb3 = Position(sLogin,"&",nPosdeb2+1) >> nPosdeb4 = Position(sLogin,"&",nPosdeb3+1) >> >> sAnnonce = sLogin[[ A nPosdeb1-1]] >> bufImage1 = sLogin[[nPosdeb1+1 A nPosdeb2-1]] >> bufImage2 = sLogin[[nPosdeb2+1 A nPosdeb3-1]] >> bufImage3 = sLogin[[nPosdeb3+1 A nPosdeb4-1]] >> bufImage4 = sLogin[[nPosdeb4+1 A]] >> >> >> >> HLitRecherche(INSCRIT,IDUTILISATEUR,nIdUser) >> INSCRIT.Image = bufImage1 >> INSCRIT.image1 = bufImage2 >> INSCRIT.image2 = bufImage3 >> INSCRIT.image3 = bufImage4 >> INSCRIT.Annonce = sAnnonce >> >> SectionCritiqueDébut("AA") >> SI HModifie(INSCRIT)= Vrai ALORS >> SocketEcrit(sNomCanal,"103 OK3") >> SocketFerme(sNomCanal) >> SectionCritiqueFin("AA") >> >> Si je récupère bien l'annonce, les images ne s'enregistrent pas. >> >> Une idée pour me sortir de la tourmente ? >> >> Merci d'avance > >