Forum Twisted Python
Rubriques :
4
Réponses :
5
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant.
Tout message hors sujet sera supprimé, pour le bien de tous.
Les messages à caractère publicitaires ne sont pas autorisés non plus.
| Sujet |
Créateur |
Réponses |
Dernière modification |
Transfert de fichier
Bonjours tout le monde,
Je voudrais programmer un petit logiciel (un client et un serveur en réalité) avec Twisted, qui permet l'envoie de données d'un ordinateur à un autre, à la façon des clients de messagerie, ou des logiciels p2p.
Je précise que je ne connais pas grand chose à la programmation réseau, c'est d'ailleurs ma principale motivation à faire ce programme.
Donc ma question est très simple: comment réaliser ça avec Twisted ?
Pour l'instant, j'ai fait quelques "expérimentations", qui fonctionnent (j'ai la documentation en ligne de Twistedmatrix), ce qui donne comme protocoles :
Pour le client:
[code]
class ClientProtocolTest(protocol.Protocol):
def connectionMade(self):
print "Début du transfert..."
fichier=open('a_envoyer.txt','rb')
self.transport.write(fichier.read())
fichier.close()
self.transport.loseConnection()
[/code]
Et pour le serveur:
[code]
class ServeurProtocolTest(basic.LineReceiver):
def dataReceived(self, data):
print 'reception en cours...'
fichier=open('reception.txt','w')
fichier.write(data)
fichier.close()
print 'fini.'
[/code]
Bon, ça marche (c'est déjà pas mal), mais je ne sais pas ce que ça vaut.
Donc plusieurs questions :
Est-ce la bonne méthode pour transférer des fichiers. Ca marche sur un fichier texte pas très lourd, mais est-ce que ça marchera pour des gros fichiers de plusieurs Mo ? J'ai essayé avec un fichier binaire de 12Mo mais ça n'a pas l'air de marcher: il affiche plein de "reception en cours"/"fini" mais semble se bloquer, et le fichier obtenu fait 4.2Ko.
Faut-il alors le découper en plusieurs envoies ?
Et dans ce cas deux questions : qu'elle est la taille appropriée des paquets ?
Comment faire ça avec Twisted ? faut il envoyer un paquet, puis déconnecter (self.transport.loseConnection()) puis se reconnecter avec le protocole Factory, envoyer un autre paquet et ainsi de suite ?
Et enfin, je ne sais pas quelle est la différence entre dataReceived, et RawdataReceveid, lequel faut-il utiliser ?
Enfin bref, si vous pouviez éclairer ma lanterne :-)
Ou me rediriger vers de la documentation en ligne.
Merci !
PNprog
|
PNprog
|
1 |
27/06/2007 17:51 |
pb twisted sous unix
salut.
G un pb avec mon application utilisant twisted.
En fait kan je demande à twisted de se connecter à une adresse:port, il rentre bien dans la factory(ClientFactory) mais ne génère pas l'instance(Protocol)(en fait il le fait mais seulement après un crtl-C !). Cela ne se produit que sur un environnement UNIX que ce soit en TCP ou en socket UNIX. En revanche c impeccable sous win.
merci
|
brouss
|
3 |
11/09/2006 17:38 |
push producer
Bonjour,
je viens enfin de trouver ce qu'il me faut aprés bcps bcps de recherche il faut le dire ...
Situation:
J'ai un client qui envoie un fichier
J'ai un autre client qui le reçois
Au milieu un serveur twisted ...
Le but du jeu (si ont peu appelé ca) est d'envoyer le fichier par petit bout de 1024 via sockets vers le serveur qui lui redirige ce socket vers l'autre socket du client qui doit recevoir le fichier.
J'ai donc trouvé "push producer", dont dans la documentation se trouve cette MAGNIFIQUE ligne :
"For example, a proxy which forwards incoming bytes from one socket to another outgoing socket might be implemented using a push producer"
Source: http://twistedmatrix.com/projects/core/documentation/howto/producers.html
Le problème est que je comprends pas comment je peux m'y prendre ...
Si quelqu'un pouvait juste m'éclairer, me conseiller, me guider, car je coince a ce niveau (rien de plus sur le net pour satisfaire mon soucis).
Merci beaucoups aux personnes qui prendrons la peine de lire ce message et d'y répondre :(
|
chmod666
|
0 |
06/08/2006 15:19 |
Problème d'import
Salut a tous ! J'essaye d'installer BAlazar (un jeu qui necessite python) et j'ai la version 2.4. Normalement je devrai tout avoir, mais quand je lance le jeu, il me met ca comme message d'erreur :
File "/usr/lib/python2.4/site-packages/tofu/__init__.py", line 101, in ?
import twisted.internet.selectreactor
ImportError: No module named selectreactor
J'ai mis ca dans ce sujet, je crois que ca a rapport avec twisted (je suis newbie :D )
Voila, je suis sous linux (mandriva 2005), j'ai cherché si je pouvais télécharger ce module sur internet, mais j'ai rien trouvé !
Merci de votre aide ! ;)
|
adele
|
1 |
31/07/2006 17:28 |