2013-06-17 4 views
0

Existe-t-il un moyen de mapper un descripteur créé par socket() vers un tampon mémoire?Un descripteur créé par socket() peut-il être mappé à un tampon mémoire?

La raison pour laquelle je cherche ceci est parce que je veux faire une application existante pour lire de la mémoire tampon que j'ai créée au lieu de son tampon TCP associé. Je ne devrais pas modifier l'application, donc je veux mapper un fd retourné par l'application à un tampon que j'ai créé.

J'ai trouvé une question similaire: Can descriptors for sockets be converted to File Pointers?

Mais je ne sais pas si fdopen() peut être utilisé pour mon but, car fdopen() ne prend que deux arguments (fd et le mode) et je ne savoir comment réassocier le fd à une mémoire que je crée avec malloc().

+0

Comment votre application sait-elle qu'il y a de nouvelles données dans ce tampon 'malloc (3)' -ed? Il pourrait y avoir une solution, mais cela dépend beaucoup de votre interface existante. –

+0

C'est en fait une bonne question. J'ai juste supposé que select() de l'application (dans laquelle je ne peux pas faire de modification) surveille si mon tampon malloc() ed est prêt à être lu. Mais, mon hypothèse peut être une grosse erreur. –

+0

Ouais, comprendre comment les notifications/rappels sont là. Avoir cela vous donnera une meilleure idée comment accrocher dans l'application existante. –

Répondre

0

Existe-t-il un moyen de mapper un descripteur créé par socket() vers un tampon mémoire?

Non. Cela n'a pas de sens. Un fichier mappé est logique à cause du système de mémoire virtuelle. Une socket mappée ne le fait pas.

Je souhaite mapper un fd renvoyé par l'application vers un tampon que j'ai créé.

Vous devrez écrire le code à lire à partir du socket dans votre tampon.

Questions connexes