2012-03-31 8 views
3

node.jsのネイティブ(C++)モジュールを作成して、ソケットを別のノードプロセスに送信できます。これは現在のプロセスとはまったく関係ありません。そうするために、私はこのための本当に簡単なAPIを持っている補助的なライブラリを使うことが大切です。私が今解決しなければならない問題は、node.jsのソケットオブジェクトのfdまたはハンドルを取得する方法です。ソケットオブジェクトからfdまたはハンドルを取得する

libuvからuv_tcp_tオブジェクトを保持しているが、そのプロパティがプライベートでhandle_と呼ばれるプロパティがありtcp_wrap.cc & tcp_wrap.hでTCPWrapクラスが、あります。また、node.js自体のモジュールではなく、node.jsのモジュールなので#includeできません。そのクラスを取得するためにソースファイルを私のモジュールにコピーするのが良い考えかどうかわかりません...

私はそれをどのように行うことができますか?

私はwinowsで実行する必要はありません、タフ。

ありがとうございます!

答えて

1

私は最終的にそれを行う方法を見つけました。私は、ヘッダー「tcp_wrap.h」、「stream_wrap.h」と「handle_wrap.h」を取られ、その後、「tcp_wrap.h」を含めました https://github.com/VanCoding/node-ancillary

:あなたはここでノードモジュールを見つけることができます。

私は、オブジェクトに以下の方法を得ることができる:

TCPWrap* wrap = static_cast<TCPWrap*>(args[0]->ToObject()->GetPointerFromInternalField(0)); 
StreamWrap* s = (StreamWrap*)wrap; 

次のコードは、ファイル記述子へのアクセスを提供し、私は私自身を作成する前に、私はこのラッパーを知っていた

s->GetStream()->fd 
+0

願いを! ;) –

+0

^^私はこの気持ちを知っています。現在のバージョンのノード・アンシラリは、もう補助ライブラリに依存していないことに注意してください。今はlibuvを使っています。 –

関連する問題