https://github.com/pseudocodes/datacollect
CTP 看穿式终端信息采集库 Go 封装,支持 macOS 和 Linux 平台。
https://github.com/pseudocodes/datacollect
Last synced: 4 months ago
JSON representation
CTP 看穿式终端信息采集库 Go 封装,支持 macOS 和 Linux 平台。
- Host: GitHub
- URL: https://github.com/pseudocodes/datacollect
- Owner: pseudocodes
- Created: 2026-01-23T07:44:30.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-01-23T08:42:18.000Z (4 months ago)
- Last Synced: 2026-01-24T00:45:28.764Z (4 months ago)
- Language: Go
- Homepage:
- Size: 2.99 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# datacollect
CTP 看穿式终端信息采集库的 Go 封装,支持 macOS、Linux 和 Windows 平台。
## 安装
```bash
go get github.com/pseudocodes/datacollect
```
## 使用方式
项目提供三种使用方式:
### 方式一:静态链接(需要 cgo)
直接导入 prd 或 tst 包:
```go
import datacollect "github.com/pseudocodes/datacollect/pkg/tst"
// 或
import datacollect "github.com/pseudocodes/datacollect/pkg/prd"
func main() {
version := datacollect.GetAPIVersion()
data, code, err := datacollect.GetSystemInfo()
data, code, err := datacollect.GetSystemInfoUnencrypted()
}
```
### 方式二:动态加载 - cgo 版本
使用 dyn 包动态加载库,可同时使用 prd 和 tst:
```go
import "github.com/pseudocodes/datacollect/pkg/dyn"
func main() {
dc, _ := dyn.NewDataCollector("path/to/library")
defer dc.Close()
version := dc.GetAPIVersion()
data, code, err := dc.GetSystemInfo()
}
```
### 方式三:动态加载 - 纯 Go 版本(推荐)
使用 pure 包通过 purego 动态加载库,无需 cgo:
```go
import "github.com/pseudocodes/datacollect/pkg/pure"
func main() {
// macOS
dc, _ := pure.NewDataCollector("path/to/MacDataCollect.framework")
// Linux
dc, _ := pure.NewDataCollector("path/to/libLinuxDataCollect.so")
// Windows
dc, _ := pure.NewDataCollector("path/to/WinDataCollect.dll")
defer dc.Close()
version := dc.GetAPIVersion()
data, code, err := dc.GetSystemInfo()
data, code, err := dc.GetSystemInfoUnencrypted()
}
```
## 平台支持
| 函数 | macOS | Linux | Windows |
|------|-------|-------|---------|
| GetSystemInfo | ✓ | ✓ | ✓ |
| GetSystemInfoUnencrypted | ✓ | ✓ (fallback) | ✓ (fallback) |
| GetAPIVersion | ✓ | ✓ | ✓ |
## 包对比
| 特性 | prd/tst | dyn | pure |
|------|---------|-----|------|
| 需要 cgo | ✓ | ✓ | ✗ |
| 可同时加载多个库 | ✗ | ✓ | ✓ |
| macOS 支持 | ✓ | ✓ | ✓ |
| Linux 支持 | ✓ | ✓ | ✓ |
| Windows 支持 | ✓ | ✓ | ✓ |
| 依赖 | 无 | 无 | purego, x/sys |
## 注意事项
使用静态链接方式(prd/tst)时,两个包不能同时在一个程序中使用,因为底层库导出相同的符号名会导致冲突。
如需同时使用 prd 和 tst,请使用 dyn 或 pure 包的动态加载方式。
## 构建
```bash
# 静态链接示例
go build -o static_demo ./examples/static
# 动态加载示例 (cgo)
go build -o dynamic_demo ./examples/dynamic
# 纯 Go 示例 (推荐)
go build -o purego_demo ./examples/purego
```
## 目录结构
```
├── pkg/
│ ├── prd/ # 生产环境包(静态链接,需要 cgo)
│ ├── tst/ # 测试环境包(静态链接,需要 cgo)
│ ├── dyn/ # 动态加载包(需要 cgo)
│ └── pure/ # 纯 Go 动态加载包(推荐)
├── examples/
│ ├── static/ # 静态链接示例
│ ├── dynamic/ # cgo 动态加载示例
│ └── purego/ # 纯 Go 示例
├── lib/ # 原始 SDK 文件
└── README.md
```
## License
MIT