# OmniSocketGo Linux only. Go 1.22. 如果目标机器只运行 `server`,只需要编译并拷贝 `server` 二进制。 如果目标机器只运行 `peer`,只需要编译并拷贝 `peer` 二进制。 `go build ./cmd/server` 和 `go build ./cmd/peer` 会把各自依赖到的功能一起编译进最终二进制,不需要再单独编译 `cmd/internal/...` 包。 - `server` 二进制会包含它依赖到的转发、协议、传输等代码 - `peer` 二进制会包含它依赖到的注册、交互发送、接收落盘、协议、传输等代码 - 只有没有被这个可执行程序引用的其他命令,才不在该二进制里,比如 `cmd/latencysummary` ## Build 按目标架构分别编译。 mkdir -p bin go build -o bin/server ./cmd/server go build -o bin/peer ./cmd/peer go build -o bin/latencysummary ./cmd/latencysummary ### Linux amd64 ```bash CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/server-linux-amd64 ./cmd/server ``` ### Linux arm64 ```bash CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/peer-linux-arm64 ./cmd/peer ``` ### Linux armv7 ```bash CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/server-linux-armv7 ./cmd/server CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/peer-linux-armv7 ./cmd/peer ``` ## Run On Different Machines `server D` 所在机器监听 `0.0.0.0:10909`。 ```bash go run cmd/kcpserver/ -listen 0.0.0.0:10909 -kcp-ts-debug-log logs/d-kcp-ts.jsonl -kcp-session-stats-log logs/d-kcp-stats.jsonl ``` `relay server C` 所在机器 ```bash go run ./cmd/kcpserver/ -mode=relay -listen 0.0.0.0:10909 -relay-remote 172.21.0.13:10909 2>&1 | tee logs/c.stdout.log ``` ### peer-a (A) ```bash go run ./cmd/kcppeer/ -id peer-a -server 172.21.0.13:10909 -relay-via 139.199.57.110:10909 -inbox-dir inbox/a -latency-log logs/a-latency.jsonl -kcp-ts-debug-log logs/a-kcp-ts.jsonl -kcp-session-stats-log logs/a-kcp-stats.jsonl go run ./cmd/kcpping/ -id peer-a -server 139.199.57.110:10909 -echo ``` ### peer-b (B) ```bash go run ./cmd/kcppeer/ -id peer-b -server 152.136.164.246:10909 -inbox-dir inbox/b -latency-log logs/b-latency.jsonl -kcp-ts-debug-log logs/b-kcp-ts.jsonl -kcp-session-stats-log logs/b-kcp-stats.jsonl go run ./cmd/kcpping -id peer-b -server 152.136.164.246:10909 -to peer-a -count 20 -interval 100ms ``` ## Interactive Commands `peer` 启动后可以在终端里持续使用同一条长连接发送多次消息。 ```text help text peer-b hello text peer-a hi file peer-a /tmp/test125.bin file peer-a /tmp/test5.bin quit ``` ### 自动化拉取更新汇总数据 cd /home/limingjie/LMJ_Work/OmniSocketGo ./scripts/refresh-latency-summary.sh