gibt einen Dateideskriptor zurück, wenn dies eine Socket-ID ist, dann sind die Möglichkeiten, dies ohne die Zusammenarbeit des Prozesses unter Windows zu erreichen, begrenzt. FWIW auf offenen Linux-FDs werden im proc-Dateisystem aufgelistet.
Das Gesagte, das einzige, was Sie in der Lage sein könnten, mit der FD zu tun ist, senden Sie zusätzliche Informationen aus dem Sockel. Sie könnten auch vom fd lesen, aber alle auf diese Weise gelesenen Daten würden nicht an die Anwendung gesendet werden, die den Socket besitzt. Ohne eine gewisse Koordination wäre das wahrscheinlich nicht das, was Sie sich wünschen, da Sie nur Teile von Daten bekommen würden.
Wenn Sie nur in der Lage sein wollen, den Verkehr in Ihrem Programm zu hören, dann sollte etwas wie Paketfilterung ausreichend sein, also nehme ich an, Sie möchten tatsächlich wie ein Mann in der Mitte dafür sein können.
Wenn dies der Fall ist, dann wäre das Beste, Ihre Anwendung als Proxy für Ihren anderen Dienst einzurichten.
Damit meine ich, schreibe ein Programm, das einen Listening-Port öffnet und akzeptiert Verbindungen, wenn eine Verbindung initiiert wird, sollte es sofort seine eigene Verbindung zu einer vorkonfigurierten IP: Port-Kombination öffnen und Verkehr weiterleiten. Sobald dies geschrieben ist, ist es eine einfache Sache, den Verkehr vor der Weiterleitung zu inspizieren und möglicherweise zu modifizieren.
Wenn Ihr Programm ein Server ist, führen Sie es auf einem nicht standardmäßigen Port aus, konfigurieren Sie diese Anwendung, um den normalen Port des Servers zu öffnen, und leiten Sie dann die Verbindungen zu dem von Ihnen auf localhost eingerichteten nicht standardmäßigen Port weiter.
Wenn Ihr Programm ein Client ist, richten Sie einfach die Interceptor-Anwendung auf den Server und wählen Sie einen zufälligen Listen-Port auf Ihrer Box. Konfigurieren Sie dann den Client so, dass er sich mit diesem Listen-Port verbindet, als wäre er der Server.
Dies sollte für so ziemlich alles funktionieren. Der einzige Nachteil ist, wenn der Verkehr verschlüsselt ist, Sie (offensichtlich) nicht in der Lage sein werden, es zu prüfen/zu modifizieren. Dies ist praktisch das Gleiche, als wenn Sie Ihre Anwendung hinter eine NAT stellen.
Duplizieren von http://stackoverflow.com/questions/2742763/how-to-get-socket-id-handle-descriptor-for-an-ready-open-connection-net-c – dzendras
Die Antwort dort ist falsch SharpPcap kann die Socket ID nicht bekommen. Wenn ich falsch liege, korrigiere mich bitte in Form einer Antwort, da ich genau danach suche. – Nick