2013-11-12 7 views
1
public void call(Response response) { 
    try { 
     cseq++; 

     current_process = cseq + " INVITE"; 
     ArrayList viaHeaders = new ArrayList(); 
     ViaHeader viaHeader = this.headerFactory.createViaHeader(this.ip, 
       5060, "udp", null); 
     viaHeaders.add(viaHeader); 
     // The "Max-Forwards" header. 
     MaxForwardsHeader maxForwardsHeader = this.headerFactory 
       .createMaxForwardsHeader(70); 
     // The "Call-Id" header. 
     CallIdHeader callIdHeader = this.sipProvider.getNewCallId(); 
     // The "CSeq" header. 
     CSeqHeader cSeqHeader = this.headerFactory.createCSeqHeader(cseq, 
       "INVITE"); 

     Address fromAddress = addressFactory.createAddress("sip:" 
       + username + '@' + server); 

     Address toAddress = addressFactory.createAddress("sip:"+this.toPrefix+this.toNumber+'@'+this.toUri); 

     FromHeader fromHeader = this.headerFactory.createFromHeader(
       fromAddress, String.valueOf(this.tag)); 
     // The "To" header. 
     ToHeader toHeader = this.headerFactory.createToHeader(toAddress, 
       null); 

     ContentLengthHeader contentLength = this.headerFactory.createContentLengthHeader(300); 
     ContentTypeHeader contentType = this.headerFactory.createContentTypeHeader("application", "sdp"); 

     String sdpData = "v=0\n" + 
       "o=user1 392867480 292042336 IN IP4 192.168.10.31\n" + 
       "s=-\n" + 
       "c=IN IP4 192.168.10.31\n" + 
       "t=0 0\n" + 
       "m=audio 8000 RTP/AVP 0 8 101\n" + 
       "a=rtpmap:0 PCMU/8000\n" + 
       "a=rtpmap:8 PCMA/8000\n" + 
       "a=rtpmap:101 telephone-event/8000\n" + 
       "a=sendrecv"; 
     byte[] contents = sdpData.getBytes(); 
     // this.contactHeader = this.headerFactory 
     // .createContactHeader(contactAddress); 

     request = this.messageFactory.createRequest("sip:"+this.toPrefix+this.toNumber+'@' 
       + this.toUri + " SIP/2.0\r\n\r\n"); 
     request.addHeader(viaHeader); 
     request.addHeader(maxForwardsHeader); 
     request.addHeader(toHeader); 
     request.addHeader(fromHeader); 
     request.addHeader(callIdHeader); 
     request.addHeader(cSeqHeader); 
     request.addHeader(contactHeader); 
     request.addHeader(contentLength); 
     request.addHeader(contentType); 
     if (response != null) { 
          retry = true; 
      System.out.println("DEBUG: Response: "+response); 
     } 
     inviteTid = sipProvider.getNewClientTransaction(request); 
     // send the request out. 
     inviteTid.sendRequest(); 
     this.dialog = inviteTid.getDialog(); 
     // Send the request statelessly through the SIP provider. 
     // this.sipProvider.sendRequest(request); 

     // Display the message in the text area. 
     logger.debug("Request sent:\n" + request.toString() + "\n\n"); 
    } catch (Exception e) { 
     // If an error occurred, display the error. 
     e.printStackTrace(); 
     logger.debug("Request sent failed: " + e.getMessage() + "\n"); 
    } 
} 

И это processResponse:Java - JAIN SIP INVITE не возвращает ответ

@Override 
public void processResponse(ResponseEvent responseEvent) { 
    System.out.println(responseEvent.getResponse()); 
    int statusCode = responseEvent.getResponse().getStatusCode(); 
      if (statusCode > 400 && statusCode < 410) { 
    if(statusCode == 401 && current_process.contains("REGISTER")) { 
     register(responseEvent.getResponse()); 
    } 
    else if(statusCode == 401 && current_process.contains("INVITE")) { 
     System.out.println("Invite 401"); 
    } 
    else if(statusCode == 200) { 
     System.out.println("Registered"); 
     call(null); 
    }  
    else { 
     System.out.println("Other code: "+ statusCode); 
    } 
} 

Я успешно зарегистрировал учетную запись на сервере, но когда он начал запрос INVITE, нет ответа вернулся.

Ниже приведен ответ, который я получил (включая ответы REGISTER), в конце вы увидите, что мой исходящий запрос INVITE не возвращает никаких ответов.

DEBUG - Request sent: 
REGISTER sip:sip.dialnow.com SIP/2.0 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-c591d8f797a179ed25a2114311df1854 
Max-Forwards: 70 
To: <sip:[email protected]> 
From: <sip:[email protected]>;tag=706572717 
Call-ID: [email protected] 
CSeq: 1 REGISTER 
Contact: <sip:[email protected]:5060;transport=UDP> 
Expires: 120 
Content-Length: 0 




SIP/2.0 401 Unauthorized 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-c591d8f797a179ed25a2114311df1854 
From: <sip:[email protected]>;tag=706572717 
To: <sip:[email protected]> 
Contact: <sip:77.72.169.129:5060> 
Call-ID: [email protected] 
CSeq: 1 REGISTER 
Server: (Very nice Sip Registrar/Proxy Server) 
Allow: ACK,BYE,CANCEL,INVITE,REGISTER,OPTIONS,INFO,MESSAGE 
WWW-Authenticate: Digest realm="sip.dialnow.com",nonce="2849852658",algorithm=MD5 
Content-Length: 0 


12d2ad0d764601c0573be88a3d94a2d8 
8b3a241c08615fba24fb161a2a344cc9 
40810f9cf3d19138dc0875dea15e3970 
DEBUG - Request sent: 
REGISTER sip:sip.dialnow.com SIP/2.0 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-3ccb8a78b8614638665f0af2a998a686 
Max-Forwards: 70 
To: <sip:[email protected]> 
From: <sip:[email protected]>;tag=706572717 
Call-ID: [email protected] 
CSeq: 2 REGISTER 
Contact: <sip:[email protected]:5060;transport=UDP> 
Expires: 120 
Authorization: Digest realm="sip.dialnow.com",nonce="2849852658",username="Frax01",uri="sip:sip.dialnow.com",algorithm=MD5,response="40810f9cf3d19138dc0875dea15e3970" 
Content-Length: 0 




SIP/2.0 100 Trying 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-3ccb8a78b8614638665f0af2a998a686 
From: <sip:[email protected]>;tag=706572717 
To: <sip:[email protected]> 
Contact: <sip:77.72.169.129:5060> 
Call-ID: [email protected] 
CSeq: 2 REGISTER 
Server: (Very nice Sip Registrar/Proxy Server) 
Allow: ACK,BYE,CANCEL,INVITE,REGISTER,OPTIONS,INFO,MESSAGE 
Content-Length: 0 


Other code: 100 
SIP/2.0 200 Ok 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-3ccb8a78b8614638665f0af2a998a686 
From: <sip:[email protected]>;tag=706572717 
To: <sip:[email protected]> 
Contact: <sip:[email protected]:5060;transport=udp>;expires=120 
Call-ID: [email protected] 
CSeq: 2 REGISTER 
Server: (Very nice Sip Registrar/Proxy Server) 
Allow: ACK,BYE,CANCEL,INVITE,REGISTER,OPTIONS,INFO,MESSAGE 
Content-Length: 0 


Registered 
DEBUG - Request sent: 
INVITE sip:[email protected] SIP/2.0 
Via: SIP/2.0/UDP 192.168.10.31:5060;branch=z9hG4bK-343133-e18f3eca8f76bd0a4378a12dd6e7a0d7 
Max-Forwards: 70 
To: <sip:[email protected]> 
From: <sip:[email protected]>;tag=706572717 
Call-ID: [email protected] 
CSeq: 3 INVITE 
Contact: <sip:[email protected]:5060;transport=UDP> 
Content-Type: application/sdp 
Content-Length: 300 

Как вы можете видеть, это просто остановилось после отправки запроса INVITE.

Благодарим вас за то, что

Adam.


Дополнительная информация:

Я попытался предложения user2932861, чтобы не повезло. Я попытался использовать свой публичный IP-адрес, но он все еще застревает в запросе INVITE. Кроме того, я поставил мое содержание SDP, ниже моего SDP содержание:

 ContentTypeHeader contentType = this.headerFactory.createContentTypeHeader("application", "sdp"); 

     String sdpData = "v=0\n" + 
       "o=user1 392867480 292042336 IN IP4 *my IP*\n" + 
       "s=-\n" + 
       "c=IN IP4 *my IP*\n" + 
       "t=0 0\n" + 
       "m=audio 8000 RTP/AVP 0 8 101\n" + 
       "a=rtpmap:0 PCMU/8000\n" + 
       "a=rtpmap:8 PCMA/8000\n" + 
       "a=rtpmap:101 telephone-event/8000\n" + 
       "a=sendrecv"; 
     byte[] contents = sdpData.getBytes(); 

     request.setContent(contents, contentType); 

Примечание: IP адрес цензуре.

Заранее благодарю вас!


В самом деле, это не совсем не возвращать никаких ответов на все, через некоторое время молчать (ничего не возвращает), консоль будет показывать «тайм-аут транзакции.» Любая идея, почему это происходит?

ответ

2

Тайм-аут транзакции соответствует таймауту sip, который должен составлять 32 с. Вы получите ответ 408, потому что не получили ответа. Это автоматический ответ, созданный самим стекем, а не ответ удаленной стороны.

Вы проверили настройки брандмауэра? Если у вас нет проблем с брандмауэром вашей ОС, вы проверили свой домашний шлюз?

Выполняются ли запросы REGISTER и INVITE на один и тот же IP-адрес? вы можете проверить, используя wireshark.

Yohann

+1

Эй, Йоханн! Спасибо за ответ. Возможно ли, что брандмауэр блокирует что-то, даже если запросы REGISTER успешны? Любое приблизительное представление о том, что я должен искать в настройках брандмауэра? Есть ли альтернатива wirehark для Linux? К сожалению, Wireshark не дает Linux-версию программы. Еще раз спасибо, Йоханн! Ценить это. Редактирование: Есть IS wirehark для Linux, как глупо со мной. Я проверю IP-адрес, на который посылают запросы, и сообщит вам. –

+0

Что касается проблем с брандмауэром, я согласен. Но вы должны проверить, что запросы REGISTER и INVITE отправляются на один и тот же реальный IP-адрес. Wireshark доступен для Linux. Вы также можете использовать tcpdump, если вам нравятся старые инструменты, но wirehark более удобен для пользователя. –

+0

, вы должны использовать диспетчер пакетов дистрибутива Linux для установки нового программного обеспечения. Поиск в Интернете для получения дополнительной информации об этом. –

0

Моя догадка для бедах:

Ваши контактные заголовки показываются частные адреса. Попробуйте использовать публично маршрутизируемые адреса здесь. (Вы можете использовать STUN, чтобы узнать свой публичный адрес или какие-то другие средства.) Если вы перейдете через B2BUA (контроллер границы сеанса AKA), он перепишет их для вас. Межсетевой экран и обход NAT в SIP нетривиальны.

Кроме того, у вас есть длина контента в вашем INVITE, но у вас есть контент? Вы забыли установить свой SDP-контент?

+0

Я отредактировал мое основное сообщение в ответе на ваш ответ, пожалуйста, взгляните! Благодаря! :) –

0

Вместо того, чтобы возиться с низким уровнем SIP, почему бы вам не попробовать более высокий уровень рамки, такие как SIP сервлетов https://code.google.com/p/sipservlets/ которые позволяют вам сосредоточиться на своей основной бизнес-логики?Вы даже можете попробовать Amazon AMI https://aws.amazon.com/marketplace/pp/B00G9G94JW/ref=srh_res_product_title?ie=UTF8&sr=0-3&qid=1383128640630#support