2012-03-31 71 views
3

我想爲node.js創建一個本地(C++)模塊,該模塊能夠將套接字發送到與當前進程完全無關的另一個節點進程。爲此,我開始使用輔助庫,該輔助庫具有非常簡單的API。我現在必須解決的問題是如何獲取fd或node.js的套接字對象的句柄。從socket對象獲取fd或句柄

有一個在tcp_wrap.cc & tcp_wrap.h一個TCPWRAP類,它有一個名爲handle_屬性,它擁有一個libuv對象uv_tcp_t,但該財產是私人的。我也不能#include,因爲它只是node.js的一個模塊,並不直接在node.js本身中。我不知道是否將源文件複製到我的模塊只是爲了獲得該類別是一個好主意...

你有任何ides我怎麼能做到這一點?

我不必在低音上運行,強悍。

謝謝!

回答

1

我終於找到了一個辦法。你可以在這裏找到節點模塊: https://github.com/VanCoding/node-ancillary

我剛剛採取了頭文件「tcp_wrap.h」,「stream_wrap.h」和「handle_wrap.h」,然後包含了「tcp_wrap.h」。

然後我可以獲取對象的方式如下:

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

然後下面的代碼可以訪問的文件描述符

s->GetStream()->fd 
+0

希望我知道關於這個包裝我創建了自己之前! ;) – 2012-07-30 19:32:29

+0

^^我知道這種感覺。請注意,當前的節點輔助版本不再依賴於輔助庫。現在使用libuv完成。 – 2012-07-30 23:24:30