星号没有通过sip响应应用程序请求

时间:2017-02-07 11:51:05

标签: c# asterisk sip

我试图制作简单click-to-call app。我安装了星号服务器,我可以使用免费softphone拨打电话。但是当我使用我的应用程序发送内容时,我得不到回复。

之前我没有使用套接字。可能就是这样。

这是我的代码:

string registerHeader = "REGISTER sip:asteriskip;transport=UDP SIP/2.0\r\n";
string toHeader = "To: <sip:1@asteriskip;transport=UDP>\r\n";
string fromHeader = "From: <sip:1@asteriskip;transport=UDP>\r\n";
string callId = "Call-ID: 1\r\n";
string CSeq = "CSeq: 1 REGISTER\r\n";
string expires = "Expires: 3600\r\n";
string via = "Via: SIP/2.0/UDP myip:myport;branch=z9hG4bK-1\r\n";
string maxF = "Max-Forwards: 70\r\n";
string UA = "User-Agent: MySoftphone\r\n";
string contact = "Contact: <sip:1@myip:myport;transport=UDP>\r\n";
string contLength = "Content-Length: 0\r\n\r\n";

Socket cl = new Socket(SocketType.Dgram, ProtocolType.Udp);
byte[] registerMsg = Encoding.ASCII.GetBytes(registerHeader + toHeader + 
    fromHeader + callId + CSeq + expires+via+maxF+UA+contact+contLength);
IPEndPoint server = new IPEndPoint(IPAddress.Parse("asteriskip"), 5060);
cl.Connect(server);
cl.Send(registerMsg);//(registerMsg, registerMsg.Length);
int bytesCount = 0;
do
{
    byte[] response = new byte[] { };
    cl.Receive(response);//(ref server);
    bytesCount = response.Length;
    string resp = Encoding.ASCII.GetString(response);
    Console.WriteLine(resp);
}
while (bytesCount == 0);
Console.ReadKey();

此请求与softphone's几乎相同,从wireshark获取。但是softphone得到了回复,而这个请求并没有。应该有注册CSeq 2,我试图发送它 - 仍然没有,如果我没有弄错,我应该在注册的第一部分之后收到类似401-Unauthorized的内容。

1 个答案:

答案 0 :(得分:0)

经过一番研究,我发现我缺少tag参数。如果未设置tag,则服务器会忽略请求。