2017-02-07 5 views
0

私はシンプルにしようとしていますclick-to-call app。私はアスタリスクサーバーをインストールしており、私は無料のを使って電話をかけることができます。しかし、私は私のアプリを使用して何かを送るとき、私は応答がありません。アスタリスクがアプリのリクエストに応答していません

以前はソケットで動作しませんでした。だから、そうかもしれない。

string registerHeader = "REGISTER sip:asteriskip;transport=UDP SIP/2.0\r\n"; 
string toHeader = "To: <sip:[email protected];transport=UDP>\r\n"; 
string fromHeader = "From: <sip:[email protected];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:[email protected]: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からそれを取った:

は、ここに私のコードです。しかし、が応答を得て、この要求は応答しません。 CSeq 2を登録する必要があります。私はそれを送ろうとしました。まだ何もありません。私が間違っていなければ、登録の第1部の後に401-Unauthorizedのようなものを受け取ります。

答えて

0

調査の結果、tagパラメータが見つからなかったことがわかりました。 tagが設定されていない場合、サーバーは要求を無視します。

関連する問題