J'essaie de transporter des données entre le serveur et le client mis en œuvre avec torsadé. Autant que je sache, l'utilisation de self.transport.write ([data]) ne fonctionnera que si les données sont une chaîne. Y a-t-il un autre moyen d'envoyer un objet d'un autre type? Je vous remercie!envoyer des données entre le serveur et le client en tordu
Répondre
Les supports portent des octets. C'est le seul genre de chose qu'ils portent. Deux extrémités d'une connexion TCP peuvent uniquement transmettre des octets les uns aux autres.
Les octets ne sont pas la structure de données la plus utile pour toutes les formes de communication. Donc au-dessus de ce transport d'octets, nous inventons des schémas pour le formatage et l'interprétation des octets. Ce sont des protocoles. Twisted représente des protocoles en tant que classes, sous-classes toujours twisted.internet.protocol.Protocol
, qui implémentent un schéma particulier.
Ces classes ont des méthodes pour transformer quelque chose qui n'est pas un octet pur en un octet pur. Par exemple, twisted.protocols.basic.NetstringReceiver
est une implémentation du netstring protocol. Il transforme un nombre particulier d'octets en octets qui représentent à la fois le nombre d'octets et les octets eux-mêmes. C'est un protocole plutôt subtil, car il n'est pas évident que le nombre d'octets est une information qui doit être transmise aussi.
Ces classes interprètent également les octets reçus du réseau, dans leur méthode dataReceived
, selon le protocole qu'ils implémentent, et transforment l'information résultante en quelque chose de plus structuré. NetstringReceiver
utilise les informations de longueur pour accepter exactement le bon nombre d'octets du réseau, puis les remet à son rappel stringReceived
sous la forme d'une seule instance Python str
.
D'autres protocoles font plus de NetstringReceiver
. Par exemple, twisted.protocols.ftp
inclut une implémentation du protocole FTP. FTP est un protocole orienté vers le passage des listes de fichiers et des fichiers sur une socket (ou plusieurs sockets, en fait). twisted.mail.pop3
implémente POP3, un protocole de transfert d'e-mails sur des sockets.
Il y a beaucoup, beaucoup de protocoles différents parce qu'il y a beaucoup, beaucoup de choses différentes que vous pourriez vouloir faire. En fonction de ce que vous essayez de faire exactement, il existe probablement différentes manières de convertir des octets vers et depuis des octets pour rendre les choses plus faciles ou plus rapides ou plus robustes (et ainsi de suite). Il n'y a donc pas de protocole unique idéal pour le cas général. Cela inclut le cas de "l'envoi d'un objet", puisque les objets peuvent prendre plusieurs formes différentes, et il peut y avoir plusieurs raisons différentes que vous voulez leur envoyer, et de nombreuses façons différentes de gérer des choses comme la mutation d'un objet précédemment envoyé, et ainsi de suite.
Vous voulez probablement passer un peu de temps à réfléchir au type de communication dont vous avez besoin. Ceci devrait suggérer certaines choses au sujet du protocole que vous choisirez pour faire la communication. Par exemple, si vous voulez pouvoir appeler des méthodes sur des objets Python qui existent de l'autre côté d'une connexion, alors Twisted Spread peut être intéressant.
Si vous voulez quelque chose au lieu interlangage, et seulement besoin de transmettre des types simples, comme des entiers, des chaînes et des listes, puis XML-RPC (Twisted How-To) pourrait être un meilleur ajustement.
Si vous avez besoin d'un protocole plus efficace que XML-RPC et prenant en charge la sérialisation de types plus complexes, alors AMP est peut-être plus approprié.
Et la liste continue.:)
- 1. Transfert de données entre le serveur et le client (Mobile)
- 2. communication silverlight entre le client et le serveur
- 3. Comment vérifier la latence entre le serveur et le client
- 4. OpenSSL établit une connexion entre le client et le serveur
- 5. Connexion sécurisée entre le client et le serveur
- 6. Requête entre le serveur SQL et le côté client
- 7. créer des ports et initier la communication entre le client et le serveur
- 8. Servlet envoyer l'image du serveur et enregistrer dans le client
- 9. allow_none dans le serveur XML-RPC tordu
- 10. Le moyen le plus rapide de partager des objets de données entre un serveur Java et un client C#
- 11. simple client et le serveur
- 12. Struts 2: Envoyer des données XML au serveur du client?
- 13. Client QT C++ tcp avec serveur python tordu
- 14. Communication client/serveur Bluetooth entre l'ordinateur et le téléphone mobile
- 15. Puis-je utiliser ce script Ajax pour communiquer et échanger des données entre le client et le serveur?
- 16. comment se connecter et envoyer des données entre de nombreux ordinateurs utilisant le réseau Java
- 17. Comment écrire un serveur tordu qui est aussi un client?
- 18. adresse déjà utilisée avec le serveur multithread dans tordu
- 19. WCF - Types de classe KnownType et de partage entre le client et le serveur
- 20. Comment puis-je partager des classes entre le client et le serveur?
- 21. PHP cURL envoyer et recevoir des images Client/Serveur
- 22. Connexion en direct entre le serveur et le client dans une page Web
- 23. Transfert de HashMap entre le client et le serveur en utilisant Sockets (JAVA)
- 24. java client tcp et le serveur
- 25. tordu: différence entre `defer.execute` et` threads.deferToThread`
- 26. Connexion entre l'iPhone et le serveur
- 27. Comment JSessionId est-il échangé entre le client et le serveur en utilisant les champs Hiddenform?
- 28. Le service .NET Ria peut-il envoyer des données du serveur au client?
- 29. Envoyer des données au serveur
- 30. tordu ne détecte pas les déconnexions client
c'est génial, merci! – Thien