Gambas France BETA


Pas de compte ? Incription

? "send complete" sur un socket

1
AuteurMessages
archi12#1 Posté le 12/12/2014 à 11:14:19
bonjour à tous,
La question ci-dessus a déja ete posée. Impossible de la retrouver.
Je fais un write sur un socket internet.
Ce write s'execute en asynchrone et retourne donc au prog immediatement.
Le serveur au bout du tuyau rale quelques fois parce qu'il lui manque des données.
Comment implementer un genre de "send complete" autour de mon socket ? (genre: while not send complete, wait 0.1 etc...)
Je peux effectivement mettre un wait de x secondes apres le write, mais j'aurai préféré une autre solution plus en rapport avec ce qui se passe.
Merci de votre aide.
Reivillo#2 Posté le 12/12/2014 à 21:44:58
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »bonsoir archi12.

Essaye de mieux Déposer ton Problème...
Avec Un Bout de Code on aurai plus de Recul.
Je sais, on se fait sa Petite Soupe Secrète...

Un vrai Forum, c'est un Partage.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
archi12#3 Posté le 13/12/2014 à 10:57:03
Reivillo bonjour,
Je Dépose mon Problème.
Voici le Bout de Code en question, pour plus de Recul
J' envoie le contenu de s (c'est du html). La derniere ligne n'est qques fois pas transmise. Le fichier fait aux environs de 10Ko.

Write #clientSocket, s, Len(s)

modifié en
Write #clientSocket, s

puis en
Try Write #clientSocket, s
If ERROR then Stop

J'aurai aimé qque chose comme
Write #clientSocket, s
While clientSocket.status <> sendComplete
Wait 0.1
While end

Voilou.
Pouvez-vous m'expliquer le pourquoi de 'je sais, on se fait sa petite soupe secrete' et de 'un vrai Forum, c'est un partage'. Pour ce dernier c'est évident, on n'y vient pas pour se moquer les uns des autres, mais pour aider un copain, si possible.
Merci de votre aide.

archi12#4 Posté le 18/12/2014 à 18:20:45
L'erreur provenait de: System error #11: Resource temporarily unavailable
Résolue comme suit (pas terrible mais ca marche !). Bien sûr, il faudrait ajouter un timer !
Reivillo ?

bEncore = True ' boolean
nbEncore = 0 ' integer
While bEncore
bEncore = False
Try Write #Last, buff ' , Len(buff) envoi du buffer vers le client
If Error
addTextlog("btnSendPic error: " & Error.Text)
Wait 0.1 ' attendre un peu
bEncore = True ' et recommencer
nbEncore += 1
End If
Wend
If nbEncore <> 0
addTextLog(">>>>>>> nb of encore " & nbEncore)
End If
1