How Console.Read()来自Asterisk AGI的行数

问题描述 投票:0回答:1

我正在通过AGI与Asterisk通信,因此我正在使用:

Console.WriteLine(command);

然后:

string res = Console.ReadLine();

读取响应。

这几乎在所有时间都可以正常工作。

当响应有多行时,仅读取第一行。例如:

<Message/ast_msg_queue>AGI Tx >> 200 result=1 (Line 1
Line 2)

即使它是n行,我如何阅读响应?

到目前为止的测试:

StringBuilder sb = new StringBuilder();
int x;
while (true) {
    x = Console.Read();
    if (x == -1) break; // This never occurs

    sb.Append(Convert.ToChar(x));
}

上面的代码创建了一个无限循环,所以也是如此:

StringBuilder sb = new StringBuilder();
string line;
while ((line = Console.ReadLine()) != null) {
    sb.AppendLine(line);
}
c# asterisk agi
1个回答
0
投票

AGI命令的结尾-空行。

所以您应该将所有内容读到空行,丢弃该行。每次。

或者只是阅读已经完成的库的源代码。有几十个。

https://www.voip-info.org/asterisk-agi/

© www.soinside.com 2019 - 2024. All rights reserved.