2010-11-04 5 views
1

J'ai une DLL qui implémente la communication socket, mais elle ne m'expose pas le descripteur Socket (application Host).Besoin d'obtenir le descripteur de socket

Ma question est:

Est-il possible que je peux obtenir le descripteur de socket qui a créé par cette dll? Parce que j'ai besoin de définir le socket par WSAIoctl() et SetSockOpt() dans mon application.

Merci,

Visli

Répondre

2

Si une bibliothèque ne pas exposer ses internes à vous, non, il n'y a généralement aucun moyen de les obtenir.

Vous pouvez essayer hooking an API function que vous connaissez la bibliothèque doit appeler, puis intercepter ses paramètres ou de la valeur de retour où vous connaissez la valeur doit être prise, mais c'est un grand et probablement assez bidouille fragile. Au lieu de cela, vous pouvez examiner plus en détail dans quoi la bibliothèque expose. Peut-être expose-t-il la valeur socket sous un nom que vous ne reconnaissez pas, ou peut-être fournit-il sa propre façon de manipuler les propriétés du socket, évitant ainsi d'utiliser les API que vous envisagez d'utiliser. Pour autant que vous le sachiez, l'utilisation des API peut interférer avec le fonctionnement de la bibliothèque.

Si tout cela échoue, vous pouvez abandonner votre bibliothèque de socket actuelle pour une bibliothèque différente. Il n'y a pas de pénurie de bibliothèques à choisir. En plus des composants socket intégrés de Delphi, vous avez Indy, ICS et Synapse; tous sont des bibliothèques Delphi natives, donc vous avez accès à tout ce que vous voulez.

Questions connexes