**HMN-win32: Package for Windows Net API **
help
ddffsd Parts of this document were translated by machine (Gpt3.5)
Backwards compatible to node6.14.2 but the precompiled version is only supported to node8 and above (because node6 has no asynchronous syntactic sugar), for node6 please compile to node6.14.2 with esbuld yourself
HMN 是HMC-WIN32 的子分支,與HMC不同的是HMN 僅處理網路相關的api
程式設計幫助(中文) help (English) CPP (source)
installation
How to call
let HMN = require ( "hmn-win32" ) ;
console . log ( "net:getConnectNetList=>" , hmn . getConnectNetList ( ) [ 0 ] )
In TypeScript using the
import HMC = require ( "hmn-win32" ) ;
功能概覽
API中間層
- ref轉換
- bool將布爾內容轉為安全的bool 類型布爾
- string將文本/偽文本內容轉為安全的文本
- int將數字/偽數字內容轉為安全的int數字
- HKEY所有註冊表的HKEY 對象
- Sleep異步的阻塞
- native直接連接HMN.node的原生方法(不建議使用)
API
- ipv4取得本機區域網路的ip(v4)
- ip取得本機區域網路的ip(適配器,v4,v6)
- **adapterIP **取得本機區域網路的ip(適配器,v4,v6)
- adapterIPAsync取得本機區域網路的ip(適配器,v4,v6) [非同步async ]
- public_ip取得本機公網ip [非同步async ]
- getNetParams取得主機網路信息
- getNetParamsAsync取得主機網路信息
- freePort取得一個tcp空閒埠(服務) [非同步async ]
- freePortTCP取得一個空閒的tcp埠[非同步async ]
- freePortUDP取得一個空閒的udp埠[非同步async ]
- hasPortUDP判斷此udp埠是否空閒[非同步async ]
- hasPortTCP判斷此TCP埠是否空閒[非同步async ]
- getSystemProxyServer取得系統代理連結(僅在啟用系統代理程式時)
- getSystemProxyPac取得系統代理pac腳本鏈接
- getDomainIPaddress從預設dns(聯網)解析網域名稱主機ip
- getDomainIPaddressAsync從預設dns(聯網)解析網域名稱主機ip [非同步async ]
- getHostsPath取得hosts檔案的路徑
- getTCPv6PortProcessID取得此連接埠被哪個進程佔用了
- getUDPv6PortProcessID取得此連接埠被哪個程序佔用了
- getUDPv4PortProcessID取得此連接埠被哪個程序佔用了
- getTCPv4PortProcessID取得此連接埠被哪個進程佔用了
- getTCPv6PortProcessIDAsync取得此連接埠被哪個程序佔用了[非同步async ]
- getUDPv6PortProcessIDAsync取得此連接埠被哪個程序佔用了[非同步async ]
- getUDPv4PortProcessIDAsync取得此連接埠被哪個程序佔用了[非同步async ]
- getTCPv4PortProcessIDAsync取得此連接埠被哪個程序佔用了[非同步async ]
- getConnectNetList枚舉此電腦中的連接埠ipv4 and ipv6 的TCP,UDP 連接埠信息
- getConnectNetListAsync枚舉此電腦中的連接埠ipv4 and ipv6 的TCP,UDP 連接埠資訊[非同步async ]
- killProcess結束該pid程序(低權利如果需要高權限的kill請使用hmc-win32)
- sleep同步阻塞(進程)
- Sleep非同步阻塞(進程)
- PortWatchdog偵測埠變化如果關閉或啟用時發起回調
- getProcessidFilePath取得進程可執行檔位置
- getProcessidFilePathAsync取得進程可執行檔位置[非同步async ]
- isAdmin判斷目前軟體是否擁有管理員權限
重新建構
HMC所有API採用winapi + nodeapi實現,因此無需重新編譯(允許運行在node8以上環境node6.14.2 需要自行使用esbuld編譯),如果您需要對原始程式碼進行修改請使用node-gyp rebuild
進行編譯,這需要有一定的C/C++基礎,編譯工具使用node-gyp即可,需要使用到的工具如下:
- node-gyp
- Visual Studio 2019(or other versions)
風險告知
每個功能模組都會經過千次以上循環呼叫無出現進程崩潰
API已經透過js嚴格轉碼只有呼叫native才需要但是由於C++和C語言都是嚴格型,必須嚴格使用typeScript嚴格傳遞類型
雖然經過疲勞測試,但是還是有可能會有無法預期的進程奔潰,所以建議在子進程下運行
C++ 的野指標和空指標和記憶體溢位引用錯誤型別錯誤等對於行程都是致命的,所以在寫新功能時需要不斷地進行模擬疲勞測試