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

全文完

相关推荐
RayRings5 天前
OFDM, OFDMA, SC-FDMA的区别
通信
liulilittle6 天前
回归物理本质:对拥塞控制实验室依赖与公平性误置的反思
网络·tcp/ip·计算机网络·算法·tcp·通信·拥塞控制
liulilittle6 天前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
liulilittle7 天前
KCC: An Exploration Along the Lines of BBR
网络·tcp/ip·计算机网络·bbr·通信·拥塞控制·kcc
liulilittle7 天前
甲骨文云中国大陆定向 QoS 原理及绕过解决方案
服务器·开发语言·网络·计算机网络·oracle·通信·qos
七夜zippoe9 天前
DolphinDB OPC-UA协议接入:工业标准通信
网络·通信·dolphindb·工业标准·opc-ua
liulilittle9 天前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信
liulilittle11 天前
删除 Inflight Bounds:为什么 KCC 放弃了 BDP 钳位
linux·网络·tcp/ip·计算机网络·信息与通信·tcp·通信
大大杰哥12 天前
SSeEmitter的基本使用和介绍
java·sse·通信
liulilittle12 天前
TCP KCC v1.0(卡尔曼拥塞控制)
linux·服务器·网络·tcp/ip·计算机网络·tcp·通信