Supposons que vous avez 2 sockets (chacun sera écouté par d'autres pairs TCP) résident chacun sur le même processus, comment ces sockets pourraient être liés, ce qui signifie que le flux d'entrée de l'autre sera lié au flux de sortie d'autres . Les prises porteront continuellement des données, aucune attente ne se produira. Normalement, le thread peut résoudre ce problème mais, plutôt que de créer des threads, y a-t-il un moyen plus efficace de raccorder les sockets?TCP Socket Piping
Répondre
Si vous devez connecter les deux extrémités du socket au même processus, utilisez plutôt la fonction pipe()
. Cette fonction renvoie deux descripteurs de fichiers, l'un utilisé pour l'écriture et l'autre pour la lecture. Il n'y a pas vraiment besoin d'impliquer TCP à cette fin.
Mise à jour: En fonction de votre clarification de votre cas d'utilisation, non, il n'y a aucun moyen de dire au système d'exploitation de connecter les extrémités de deux prises différentes ensemble. Vous devrez écrire du code pour lire à partir d'une socket et écrire les mêmes données à l'autre. En fonction de l'architecture de votre processus, vous pouvez ou non avoir besoin d'un thread supplémentaire pour effectuer ce travail. Par exemple, si votre application est basée sur une boucle select()
, la création d'un autre thread n'est pas nécessaire.
Vous pouvez éviter les threads avec une file d'attente d'événements dans le processus. L'article WP Message queue suppose que vous voulez que les messages interprocess passent, mais si vous utilisez des sockets, vous effectuez un certain nombre de messages interprocessus passant par le même processus.
- 1. TCP Socket Test
- 2. Java TCP Socket reniflage
- 3. TCP socket communication
- 4. Socket TCP .NET avec session
- 5. Socket TCP et données binaires
- 6. problème d'écriture Socket TCP/IP
- 7. Serveur de socket Java tcp avec socket client j2me
- 8. Configuration du délai d'expiration du socket TCP
- 9. Messages XML sur une socket TCP/IP
- 10. TCP Socket Connection Server Type de côté
- 11. connexion HTTP permanente vs connexion socket TCP
- 12. problème avec la connexion IO :: Socket TCP
- 13. DIRECTOR "Socket serveur/client TCP/IP"
- 14. Comment séparer les messages de socket TCP
- 15. problème d'établissement d'une connexion socket TCP
- 16. Python Piping 'type' question
- 17. Confusion PowerShell ForEach/Piping
- 18. CPanel Email Piping to PHP
- 19. Impossible d'envoyer des données via TCP depuis le socket java vers le serveur .net tcp
- 20. Comment obtenir l'adresse IP de boost :: asio :: ip :: tcp :: socket?
- 21. problème avec l'écriture TCP socket dans l'objectif c (message d'erreur)
- 22. unget octets à amplifier :: asio :: ip :: tcp :: socket
- 23. Délais d'envoi et de retransmission du socket TCP
- 24. boost :: asio :: ip :: tcp :: le socket est connecté?
- 25. Récupération d'un socket TCP cassé en Ruby quand dans gets()
- 26. Serveur Socket TCP/IP en temps réel sur Amazon EC2
- 27. C C++ - Classe TCP Socket: Problème de réception
- 28. Programmation en C - port distant du socket tcp récupération
- 29. C# tcp socket client serveur transfert plusieurs fichiers problème
- 30. Configuration d'ActiveMQ de socket tcp en utilisant mina
En fait, ces prises seront écoutées par les clients, donc il doit y avoir des sockets – whoi
Il semble que j'ai mal compris votre cas d'utilisation. Je vais mettre à jour ma réponse. –
Etes-vous en train de dire socket select() fonction, pouvez-vous faire une clarification? – whoi