测试 Kamailio 的 evapi 模块

复制代码
...
loadmodule "evapi.so"

modparam("evapi", "netstring_format", 1)
modparam("evapi", "bind_addr", "0.0.0.0:9000")
...

event_route[evapi:connection-new] {
    xlog("new connection from $evapi(srcaddr):$evapi(srcport)\n");
}
 
event_route[evapi:message-received] {
    xlog("received [$evapi(msg)] from $evapi(srcaddr):$evapi(srcport)\n");
}

启动 kamailio

运行下面的命令:

echo '13:Hello, 世界,' | nc 127.0.0.1 9000 -w 1

kamailio 日志为:

<script>: new connection from 127.0.0.1:55392

<script>: received Hello, 世界 from 127.0.0.1:55392

evapi evapi_dispatch.c:510: evapi_recv_client(): client closing connection - pos 0 addr 127.0.0.1:55392


netstring 的拼接规则是 {字节长度}:{原字符串},

其中字符串 "Hello, 世界" 前7个是英文字符,每个英文字符占一个字节

后2个是中文UTF8,每个中文占3个字节,一共是6字节

7+6=13

netstring 最后的结果就是 '13:Hello, 世界,'

下面是 c# 代码:

复制代码
string text = "Hello, 世界"; 
byte[] data = Encoding.UTF8.GetBytes(text);
string netstring = $"{data.Length}:{text},";

需要留意的是,string 处理成了 byte 数组, 而不是 char 数组

你 get 到了吗?

全文完

相关推荐
liulilittle3 天前
BBR 状态机
网络·通信
无名3874 天前
再评 https://github.com/sipwise/rtpengine/issues/415
通信
xixixi777775 天前
确定性网络:从技术原理到产业落地,2026 年开启广域确定性新时代
人工智能·安全·互联网·北斗·通信·确定性网络·局域
xixixi777776 天前
算力网络双轮驱动:800G 光模块价格再降、1.6T 商用提速,AI-eSIM 用户破亿重构身份生态
网络·人工智能·ai·大模型·光模块·通信·运营商
liulilittle7 天前
TCP UCP 卡尔曼滤波器
网络·网络协议·tcp/ip·通信
liulilittle14 天前
TCP UCP v1.0 拥塞控制算法(Linux Kernel CC-A)
linux·网络·网络协议·tcp/ip·c·通信·拥塞控制
山木嵌入式16 天前
同步通信与异步通信(UART/USART):定义、原理、场景全解析
串口·嵌入式·uart·通信
小贺儿开发17 天前
Unity3D 串口通信上位机联调系统
unity·串口·协议·数据·通信·传输·互动
辰尘_星启17 天前
【Linux】Python Socket编程指南
linux·python·socket·系统·通信
无名38718 天前
rtpengine.conf 设置 table=0
通信