Page 1 sur 1

SendNetworkFile dans un thread

Publié : sam. 17/avr./2004 23:13
par julien
Salut @ tous :)

Je me suis attardé sur la source du serveur Web Atomic dans les exemples de la 3.90, et d'après ce que j'ai compris (du code) le serveur ne peux pas envoyer des données à plus d'un client à la fois ?

Par exemple si le serveur envoie un fichier de 50 Mo au client 'P' et que le client 'B' veut se connecter au serveur en même temps, le client 'B' n'aura pas de réponse.

Je dis ça parce qu'il y' marqué dans l'aide que 'SendNetworkFile' stop le programme :

"Lors de l'émission, l'exécution du programme est stoppée jusqu'à ce que le fichier complet ait été envoyé."

La solution serai donc de faire tourner l'envoie des données pour le client dans un thread ?

J'ai essayé cette solution mais ça n'a pas marché (:roll:) ou j'ai du me tromper qq part...!!

Si vous avez une petite solution ou des conseils et bien j'suis preneur (a v'tr bon coeur)

Pendant que j'y suis on parle souvent des failles des serveurs Web, de quel genre de faille s'agit il ? quel sont les erreurs de programmation qui provoque cela ?. Atomic WebServer en contient elle ?
Je dis ça car je veux faire tourner ce serveur sur mon PC, mais bon si c du gruyère... :D

Publié : sam. 17/avr./2004 23:19
par cederavic
ha oui sa peut etre interressant de coder son propre server :) je vais y jeter un oeil, je te tient au courant pour les thread ;)

Publié : sam. 17/avr./2004 23:28
par julien
merci quel rapidité :D

Publié : sam. 17/avr./2004 23:32
par cederavic
:P

Publié : dim. 18/avr./2004 9:51
par Oliv
j'ai plus le code mais receivenetworkdata() fonctionne coté client dans un thread, je l'avais fait pour un client FTP

Publié : dim. 18/avr./2004 10:08
par cederavic
et moi je l'avais fait coter server, je sais pas si tu te rapelle oliv, je croit ke c'etait sur la 2eme generation du musé, enfin je vais quand meme regarde sur le muse, sinon je vais le refaire :)

Publié : dim. 18/avr./2004 10:26
par cederavic
retrouver :) c'est par ici : ... euh non il fallait prendre la premiere a gauche, c'est par la : http://www.serveurperso.com/~cederavic/ ... 13c522e801

Publié : dim. 18/avr./2004 10:36
par julien
est ce prudent d'appeler la fonction ' KillThread(ThID)' ?
Dans l'aide il est marqué que cette fonction est dangereuse (en quoi).
De toute façon la proceedure se termine juste après ? Donc le thread se termine de lui même ?


Procedure SReceiveData(value.b)

Repeat

DataLength = ReceiveNetworkData(ClientID, *Buffer, 2000)

Until DataLength <> 2000

MessageRequester("Server...", "Vous avez ressu un message : " + Eol + PeekS(*Buffer), 0)

KillThread(ThID)

EndProcedure

Publié : dim. 18/avr./2004 11:26
par Oliv
si tu n'apelles pas cette fonction, le thread restera en mémoire pour rien je crois

Publié : dim. 18/avr./2004 11:34
par cederavic
de toute façon, c'est pas top ce truc, j'en ai refait un bocoup mieu, chaque client est traiter de façon permanent jusqu'a ce qu'il ce deconnecter ou que se soit le server qui le deconnecte, voir le code dans truc et astuces(c'est la base, sa peut servir pour pas mal de serveur a mon avis :)

Publié : dim. 18/avr./2004 11:38
par julien
ok j'vais voir