0

JAIN SIP API を使用して SIP 登録要求を送信しようとしています。クラスに javax.sip.SipListener を実装しました。私のプログラムはリクエストを正常に送信し、さらに sip サーバーから 401 の無許可の応答を受け取りました。これは、wireshark を使用して確認しました。しかし、processResponse() が呼び出されていません。processResponse() 内で System.out.Println("response received") を使用して、呼び出されたかどうかを確認しました。なぜこれが起こっているのか誰でも助けてくれますか?私は頭をたくさん燃やしてしまい、理解できませんでした。以下にコードを貼り付けました。

public class CoreEngine は javax.sip.SipListener を実装します{

//public localip=Inet4Address.getLocalHost().getHostAddress();
SipFactory sipFactory = null;
SipStack sipStack = null;
Properties properties;
HeaderFactory headerFactory;
AddressFactory addressFactory;
MessageFactory messageFactory; 
SipProvider sipProvider ;
ListeningPoint lp;
ContactHeader contactHeader;
ClientTransaction inviteTid;

public void init() throws Exception {

    sipFactory = SipFactory.getInstance();
    sipFactory.setPathName("gov.nist");
     properties = new Properties();
    properties.setProperty("javax.sip.STACK_NAME", "Sip_Test");
    // Create SipStack object
    sipStack = sipFactory.createSipStack(properties);
     headerFactory = sipFactory.createHeaderFactory();
     addressFactory = sipFactory.createAddressFactory();
    messageFactory = sipFactory.createMessageFactory();
    lp = sipStack.createListeningPoint("192.168.0.205",
              5060, ListeningPoint.UDP);
    sipProvider = sipStack.createSipProvider(lp);


}

public void register() throws Exception {
    String fromName = "223344";
    String fromSipAddress = "173.194.117.84";

    String toSipAddress = "173.194.117.84";
    String toUser = "223344";
    SipURI fromAddress = addressFactory.createSipURI(fromName,
            fromSipAddress);
    System.out.println("sipuri fromaddress"+fromAddress);

    Address fromNameAddress = addressFactory.createAddress(fromAddress);
    FromHeader fromHeader = headerFactory.createFromHeader(
              fromNameAddress, null);
    SipURI toAddress = addressFactory
              .createSipURI(toUser, toSipAddress);
    Address toNameAddress = addressFactory.createAddress(toAddress);
    ToHeader toHeader = headerFactory.createToHeader(toNameAddress,
              null);

    URI requestURI = addressFactory.createURI(
              "sip:" + "173.194.117.84");
    List<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
    String ipAddress = lp.getIPAddress();
    ViaHeader viaHeader = headerFactory.createViaHeader(ipAddress,
              lp.getPort(),
              lp.getTransport(), null);

    viaHeaders.add(viaHeader);

    CallIdHeader callIdHeader = sipProvider.getNewCallId();

    CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1L,
              Request.REGISTER);

    MaxForwardsHeader maxForwards = headerFactory
              .createMaxForwardsHeader(70);

    Request request = messageFactory.createRequest(requestURI,
              Request.REGISTER, callIdHeader, cSeqHeader, fromHeader,
              toHeader, viaHeaders, maxForwards);



    SipURI contactURI = addressFactory.createSipURI(fromName, "173.194.117.84");
    contactURI.setPort(sipProvider.getListeningPoint(lp.getTransport())
              .getPort());
    Address contactAddress = addressFactory.createAddress(contactURI);

    contactHeader = headerFactory.createContactHeader(contactAddress);
    request.addHeader(contactHeader);

    Header extensionHeader = headerFactory.createHeader("Expires",
         "120");
    request.addHeader(extensionHeader);
    System.out.println("request is"+ request);
    inviteTid = sipProvider.getNewClientTransaction(request);
    inviteTid.sendRequest();

}



public void processRequest(RequestEvent requestEvent) {


}

public void processResponse(ResponseEvent responseEvent) {
    System.out.println("Response received");
    System.out.println("response event"+ responseEvent.getResponse().getStatusCode());
}

public void processTimeout(TimeoutEvent timeoutEvent) {

}

public void processIOException(IOExceptionEvent exceptionEvent) {

}

public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) {

}

public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) {

}

}

4

1 に答える 1

1

このような場所に addSipListener() がありますか?

sipProvider.addSipListener(listener);

それがコールバックを機能させるものです。あなたの場合、リスナーはコールバック インターフェイスを実装しているため、CoreEngine インスタンスです。

于 2014-04-01T20:12:56.677 に答える