# service_oriented_edge_gateway
**Repository Path**: hollson/soeg
## Basic Information
- **Project Name**: service_oriented_edge_gateway
- **Description**: SOEG面向服务的边缘网关(Service Oriented Edge Gateway)
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-14
- **Last Updated**: 2026-07-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Cpp, Gateway
## README
# 面向服务的智能边缘网关(SOEG)
## 一. 项目概述
**SOEG** (Service Oriented Edge Gateway) 是专为分布式场景打造的高性能、高安全通信中枢。项目采用"模块化 + 总线模型"的核心设计理念,为边缘计算等分布式环境提供可靠的通信支撑。
### 核心特性
- **架构设计**:模块化与总线模型构建,功能模块通过总线高效协同,兼具灵活性与可扩展性
- **核心能力**:整合KCP/UDP/TCP协议的安全通信、全链路认证、客户端代理、服务状态同步及会话管理
- **部署适配**:支持边缘代理模式与去中心化部署,完美适配边缘节点分散特性
- **拓扑管理**:通过网关互通与多级代理构建弹性拓扑,确保全节点状态一致
### 适用场景
- 工业物联网(设备互联)
- 智慧城市(终端协同)
- 云边协同(边缘代理)
## 二. 项目架构
### 系统架构图
### 组件模型图
### 项目结构
```
soeg_server/
├── .vscode/ # IDE配置文件
├── docs/ # 技术文档
├── etc/ # 配置文件目录
├── samples/ # 技术验证示例
├── libs/ # 三方库文件
├── include/
│ ├── core/ # 核心头文件
│ └── modules/ # 模块头文件
├── src/
│ ├── core/ # 核心源码
│ ├── modules/ # 模块源码
│ └── main.cpp # 入口文件
└── tools/ # 相关工具
```
## 三. 编译运行
### 编译命令
```shell
shell
$ make build
-- Configuring done
-- Generating done
-- Build files written to: /workspace/soeg_server/cmake_build
[100%] Built target soeg_server
```
### 运行命令
```shell
$ make run
====================================================================
Service Oriented Edge Gateway (v1.0.0)
====================================================================
10-01 23:12:16 INF [Manager] Current IPv4: 192.168.1.10
10-01 23:12:16 INF [Manager] Using etc/config.ini
10-01 23:12:16 INF [Manager] Logger initialized.
10-01 23:12:16 INF [Manager] Loading mock data...
10-01 23:12:16 INF [Manager] Load module - Router
10-01 23:12:16 INF [Manager] Load module - Breadcast
10-01 23:12:16 INF [Manager] Load module - Sync
10-01 23:12:16 INF [Manager] Load module - Agent
10-01 23:12:16 INF [Manager] Load module - RegCenter
10-01 23:12:16 INF [Manager] Load module - API
10-01 23:12:16 INF [Manager] Init module - Router
10-01 23:12:16 INF [Manager] Init module - Breadcast
10-01 23:12:16 INF [Manager] Init module - Sync
10-01 23:12:16 INF [Manager] Init module - Agent
10-01 23:12:16 INF [Manager] Init module - RegCenter
10-01 23:12:16 INF [Manager] Init module - API
10-01 23:12:16 INF [Manager] Start module - Router
10-01 23:12:16 INF [Listener] Gateway socket[FD:4] is running on 5002 ...
10-01 23:12:16 INF [Manager] Start module - Breadcast
10-01 23:12:16 INF [Listener] MultiCast socket[FD:5] is running on 1224 ...
10-01 23:12:21 INF [Broadcast] Summon[PSH] payload { 192.168.1.10|5002|192.168.1.10|5004 } @1 ...
10-01 23:12:26 INF [Broadcast] Summon[PSH] payload { 192.168.1.10|5002|192.168.1.10|5004 } @2 ...
10-01 23:12:31 INF [Broadcast] Summon[PSH] payload { 192.168.1.10|5002|192.168.1.10|5004 } @3 ...
10-01 23:12:31 INF [Manager] Start module - Sync
10-01 23:12:31 INF [Manager] Start module - Agent
10-01 23:12:31 INF [Manager] Start module - RegCenter
10-01 23:12:31 INF [Manager] Start module - API
10-01 23:12:36 INF [Sync] Start to sync[1] ...
10-01 23:12:36 WRN [Sync] No other gateways found.
...
```
### 运行状态检查
```shell
shell
# 查看UDP服务状态
$ netstat -anp|grep soeg_
udp 0 0 0.0.0.0:5002 0.0.0.0:* 29127/./soeg_servi
udp 0 0 0.0.0.0:1224 0.0.0.0:* 29127/./soeg_servi
```
## 四. 测试演示
### 1. Select多路复用测试
```shell
$ make testx name=select_udp_test
SELECT多路复用,监听 0.0.0.0:7001
SELECT多路复用,监听 0.0.0.0:7002
收到数据(端口7001,来自127.0.0.1:62886):测试Select_UDP1
收到数据(端口7002,来自127.0.0.1:60591):测试Select_UDP2
```
### 2. UDP服务兼组播测试
```shell
$ make testx name=udp_with_multicast_test
UDP服务(单播&组播)启动:
- 普通UDP监听:0.0.0.0:9001
- 组播UDP监听:224.2.2.4:9002
单播消息 (来自127.0.0.1:63820) : 单播消息
组播消息 (来自192.168.1.10:64273) : 组播消息
```
## 五. Make命令帮助
```shell
$ make
Usage: make [command] [options]
Available Commands:
build 编译程序
run 运行程序
test 运行全部测试用例
testx name= 运行目标测试程序
clean 清理缓存
push 推送到远程仓库
help 查看帮助
```