import javax.sip.*; import javax.sip.address.*; import javax.sip.header.*; import javax.sip.message.*; public class SipUserAgent implements SipListener { private SipFactory sipFactory; private SipProvider sipProvider; private AddressFactory addressFactory; private MessageFactory messageFactory; private HeaderFactory headerFactory; private String serverAddress; private int serverPort; private String username; private String password; public SipUserAgent(String serverAddress, int serverPort, String username, String password) { this.serverAddress = serverAddress; this.serverPort = serverPort; this.username = username; this.password = password; } public void init() throws Exception { sipFactory = SipFactory.getInstance(); sipFactory.setPathName("gov.nist"); sipProvider = sipFactory.createSipProvider( sipFactory.createSipStack(), new ListeningPoint[] { sipFactory.createListeningPoint(serverAddress, serverPort, "udp") }); sipProvider.addSipListener(this); addressFactory = sipFactory.createAddressFactory(); messageFactory = sipFactory.createMessageFactory(); headerFactory = sipFactory.createHeaderFactory(); } public void register() throws Exception { Address fromAddress = addressFactory.createAddress("sip:" + username + "@" + serverAddress + ":" + serverPort); ContactHeader contactHeader = headerFactory.createContactHeader(addressFactory.createAddress("sip:" + username + "@" + serverAddress + ":" + serverPort)); Request registerRequest = messageFactory.createRequest( fromAddress.getURI(), Request.REGISTER, sipProvider.getNewCallId(), headerFactory.createCSeqHeader(1L, Request.REGISTER), headerFactory.createFromHeader(fromAddress, "reg" + System.currentTimeMillis()), headerFactory.createToHeader(fromAddress, null), headerFactory.createViaHeader(serverAddress, serverPort, "udp", null), contactHeader, headerFactory.createMaxForwardsHeader(70)); registerRequest.addHeader(headerFactory.createAuthorizationHeader("Digest")); registerRequest.addHeader(headerFactory.createExpiresHeader(3600)); ClientTransaction registerTransaction = sipProvider.getNewClientTransaction(registerRequest); sipProvider.sendRequest(registerTransaction); } @Override public void processRequest(RequestEvent event) { } @Override public void processResponse(ResponseEvent event) { } @Override public void processTimeout(TimeoutEvent event) { } @Override public void processIOException(IOExceptionEvent event) { } @Override public void processTransactionTerminated(TransactionTerminatedEvent event) { } @Override public void processDialogTerminated(DialogTerminatedEvent event) { } } public class Main { public static void main(String[] args) { String serverAddress = "example.com"; int serverPort = 5060; String username = "alice"; String password = "password"; SipUserAgent userAgent = new SipUserAgent(serverAddress, serverPort, username, password); try { userAgent.init(); userAgent.register(); Thread.sleep(5000); // ... } catch (Exception e) { e.printStackTrace(); } } }


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