背景
NPS是一款非常nice的内网穿透软件,相较于frp更加的友好,功能也更多。
NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
并且提供C端SDK可以集成到自己的应用里面
命令行模式启动客户端
从v0.26.10开始,此函数会阻塞,直到客户端退出返回,请自行管理是否重连
p0->连接地址
p1->vkey
p2->连接类型(tcp or udp)
p3->连接代理
extern GoInt StartClientByVerifyKey(char* p0, char* p1, char* p2, char* p3);
查看当前启动的客户端状态,在线为1,离线为0
extern GoInt GetClientStatus();
关闭客户端
extern void CloseClient();
获取当前客户端版本
extern char* Version();
获取日志,实时更新
extern char* Logs();
交叉编译
go 的交叉编译非常的简单
# 海思aarch64
env GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-himix100-linux-gcc AR=aarch64-himix100-linux-ar go build -buildmode=c-shared -o npc_sdk.so cmd/npc/sdk.go
# nvidia平台
env GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-ar go build -buildmode=c-shared -o npc_sdk.so cmd/npc/sdk.go
本地目录将生成npc_sdk.so、npc_sdk.h
hayson@hayson-Server:/nps$ file npc_sdk.so
npc_sdk.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=888d7ca7bd88f43cae9593af177fc444cab659c2, not stripped