测试 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 到了吗?

全文完

相关推荐
搞科研的小刘选手15 小时前
【广州大学主办 | IEEE出版 | 落地广州】第八届国际科技创新学术交流大会暨通信、信息系统和软件工程学术会议(CISSE 2026)
软件工程·通信·信息系统·学术会议·广州大学·科技创新·会议推荐
so~what8 天前
6G Day 1
信息与通信·通信
littleBird_211 天前
NR 5G-A NTN 小区搜索及NTN相关SIB
5g·通信·nr
搞科研的小刘选手12 天前
【见刊检索快 | 重庆线上线下同步】第五届信号处理、计算机网络与通信国际学术会议(SPCNC 2026)
计算机网络·信号处理·通信·学术会议·会议推荐·重庆
星恒讯工业路由器14 天前
双栈时代的访问断层:当同一个域名走向两条网络路径
网络·物联网·信息与通信·ipv4·通信·ipv6·双栈网络
littleBird_215 天前
NR 5G-A NTN技术概述
5g·通信·nr
一条大祥脚23 天前
26CCPC网络赛 DFS|数学|解方程|异或哈希|通信|二分|倍增|期望DP|最短路计数
通信·倍增·ccpc网络赛·疑惑哈希·期望dp
小贺儿开发25 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
搞科研的小刘选手1 个月前
【中国·海口(线上+线下)】2026年智能感知、通信与海洋应用国际学术会议(ISCMA 2026)
通信·学术会议·会议推荐·智能感知·海洋应用·海口·海南大学
码上有光1 个月前
Linux进程通信——共享内存、消息队列和信号量
android·linux·运维·共享内存·通信