<dependencies> <dependency> <groupId>javax.sip</groupId> <artifactId>javax.sip-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>gov.nist.javax.sip</groupId> <artifactId>jain-sip-ri</artifactId> <version>1.2.146</version> </dependency> </dependencies> import javax.sip.*; import javax.sip.header.*; import javax.sip.message.*; public class SipCallApp implements SipListener { private SipFactory sipFactory; private SipStack sipStack; private SipProvider sipProvider; private String localIp = "192.168.0.1"; private int localPort = 5060; private String remoteIp = "192.168.0.2"; private int remotePort = 5060; private String username = "user1"; private String password = "password1"; private String toSipUri = "sip:user2@domain.com"; public void init() throws Exception { sipFactory = SipFactory.getInstance(); sipFactory.setPathName("gov.nist"); sipStack = sipFactory.createSipStack(createProperties()); sipProvider = sipStack.createSipProvider(createListeningPoint()); sipProvider.addSipListener(this); } private Properties createProperties() { Properties properties = new Properties(); properties.setProperty("javax.sip.STACK_NAME", "mySipStack"); properties.setProperty("javax.sip.IP_ADDRESS", localIp); return properties; } private ListeningPoint createListeningPoint() throws Exception { ListeningPoint listeningPoint = sipStack.createListeningPoint(localIp, localPort, "udp"); return listeningPoint; } public void register() throws Exception { AddressFactory addressFactory = sipFactory.createAddressFactory(); HeaderFactory headerFactory = sipFactory.createHeaderFactory(); Address localAddress = addressFactory.createAddress("sip:" + username + "@" + localIp + ":" + localPort); ContactHeader contactHeader = headerFactory.createContactHeader(localAddress); FromHeader fromHeader = headerFactory.createFromHeader(localAddress, null); ToHeader toHeader = headerFactory.createToHeader(addressFactory.createAddress(toSipUri), null); CallIdHeader callIdHeader = sipProvider.getNewCallId(); CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1L, Request.REGISTER); MaxForwardsHeader maxForwardsHeader = headerFactory.createMaxForwardsHeader(70); Request request = sipFactory.createRequest( "REGISTER sip:" + remoteIp + ":" + remotePort + " SIP/2.0\r \r ", fromHeader, toHeader, callIdHeader, cSeqHeader, contactHeader, maxForwardsHeader); request.setHeader(headerFactory.createExpiresHeader(600)); ClientTransaction clientTransaction = sipProvider.getNewClientTransaction(request); clientTransaction.sendRequest(); } public void call() throws Exception { AddressFactory addressFactory = sipFactory.createAddressFactory(); HeaderFactory headerFactory = sipFactory.createHeaderFactory(); Address localAddress = addressFactory.createAddress("sip:" + username + "@" + localIp + ":" + localPort); ContactHeader contactHeader = headerFactory.createContactHeader(localAddress); FromHeader fromHeader = headerFactory.createFromHeader(localAddress, null); ToHeader toHeader = headerFactory.createToHeader(addressFactory.createAddress(toSipUri), null); CallIdHeader callIdHeader = sipProvider.getNewCallId(); CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1L, Request.INVITE); MaxForwardsHeader maxForwardsHeader = headerFactory.createMaxForwardsHeader(70); Request request = sipFactory.createRequest( "INVITE sip:" + toSipUri + " SIP/2.0\r \r ", fromHeader, toHeader, callIdHeader, cSeqHeader, contactHeader, maxForwardsHeader); ClientTransaction clientTransaction = sipProvider.getNewClientTransaction(request); clientTransaction.sendRequest(); } public void processRequest(RequestEvent requestEvent) { } public void processResponse(ResponseEvent responseEvent) { } public void processTimeout(TimeoutEvent timeoutEvent) { } public void processIOException(IOExceptionEvent exceptionEvent) { } public void processTransactionTerminated(TransactionTerminatedEvent event) { } public void processDialogTerminated(DialogTerminatedEvent event) { } public static void main(String[] args) { try { SipCallApp sipApp = new SipCallApp(); sipApp.init(); sipApp.register(); sipApp.call(); } catch (Exception e) { e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文