[SIPForum-discussion] jain sip options message
rajib deka
rajibdk at gmail.com
Sat Jun 12 21:33:58 UTC 2010
Hi List,
I am trying to send an OPTIONS message from my machine (127.0.0.1) to
another machine 10.128.18.61 (OpenSIPS server). But message sending is
getting timeout and I have not received any OPTIONS message on OpenSIPS log.
Please help me out (No firewall is running on both the machines).
package com.rd;
import javax.sip.*;
import javax.sip.address.*;
import javax.sip.header.*;
import javax.sip.message.*;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Properties;
public class testSIP implements SipListener {
private String username;
private SipStack sipStack;
private SipFactory sipFactory;
private AddressFactory addressFactory;
private HeaderFactory headerFactory;
private MessageFactory messageFactory;
private SipProvider sipProvider;
private ClientTransaction optionsTId;
/** Here we initialize the SIP stack. */
public testSIP(String username)
{
setUsername(username);
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "TextClient");
//properties.setProperty("javax.sip.IP_ADDRESS", ip);
properties.setProperty("javax.sip.OUTBOUND_PROXY", "127.0.0.1:5060" + "/" +
ListeningPoint.UDP);
//DEBUGGING: Information will go to files
//textclient.log and textclientdebug.log
properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");
properties.setProperty("gov.nist.javax.sip.SERVER_LOG", "textclient.txt");
properties.setProperty("gov.nist.javax.sip.DEBUG_LOG","textclientdebug.log");
try {
sipStack = sipFactory.createSipStack(properties);
headerFactory = sipFactory.createHeaderFactory();
addressFactory = sipFactory.createAddressFactory();
messageFactory = sipFactory.createMessageFactory();
//ListeningPoint tcp = sipStack.createListeningPoint("127.0.0.1", 5070,
ListeningPoint.TCP);
ListeningPoint udp = sipStack.createListeningPoint("127.0.0.1", 5070,
ListeningPoint.UDP);
//sipProvider = sipStack.createSipProvider(tcp);
//sipProvider.addSipListener(this);
sipProvider = sipStack.createSipProvider(udp);
sipProvider.addSipListener(this);
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* This method uses the SIP stack to send a message.
*/
public void sendMessage() throws ParseException,
InvalidArgumentException, SipException {
//create from header
SipURI from = addressFactory.createSipURI(getUsername(), getHost() +
":" + getPort());
Address fromNameAddress = addressFactory.createAddress(from);
fromNameAddress.setDisplayName(getUsername());
FromHeader fromHeader = headerFactory.createFromHeader(fromNameAddress,
"textclientv1.0");
//create to header
String username = "opensips";
String address = "10.128.18.61";//"usnjpar1askvm01.us.ad.irmc.com";
SipURI toAddress = addressFactory.createSipURI(username, address);
Address toNameAddress = addressFactory.createAddress(toAddress);
toNameAddress.setDisplayName(username);
ToHeader toHeader = headerFactory.createToHeader(toNameAddress, null);
SipURI requestURI = addressFactory.createSipURI(username, address);
requestURI.setTransportParam("udp");
ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
ViaHeader viaHeader = headerFactory.createViaHeader(getHost(), getPort(),
"udp", "branch1");
viaHeaders.add(viaHeader);
CallIdHeader callIdHeader = sipProvider.getNewCallId();
CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(1L, Request.OPTIONS);
MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70);
Request request = messageFactory.createRequest(requestURI,
Request.OPTIONS, callIdHeader, cSeqHeader, fromHeader,
toHeader, viaHeaders, maxForwards);
SipURI contactURI = addressFactory.createSipURI(getUsername(),getHost());
contactURI.setPort(getPort());
Address contactAddress = addressFactory.createAddress(contactURI);
contactAddress.setDisplayName(getUsername());
ContactHeader contactHeader =
headerFactory.createContactHeader(contactAddress);
request.addHeader(contactHeader);
//ContentTypeHeader contentTypeHeader =
headerFactory.createContentTypeHeader("text", "plain");
//request.setContent(message, contentTypeHeader);
optionsTId = sipProvider.getNewClientTransaction(request);
// send the request out.
optionsTId.sendRequest();
//sipProvider.sendRequest(request);
//Dialog dialog = optionsTId.getDialog();
//System.out.println("Dialog: " + dialog.getDialogId());
}
/** This method is called by the SIP stack when a response arrives. */
public void processResponse(ResponseEvent responseEvent) {
Response response = responseEvent.getResponse();
ClientTransaction tid = responseEvent.getClientTransaction();
CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME);
System.out.println("Response received : Status Code = " +
response.getStatusCode() + " " + cseq);
if (tid == null) {
System.out.println("Stray response -- dropping ");
return;
}
try {
if (response.getStatusCode() == Response.OK) {
if (cseq.getMethod().equals(Request.OPTIONS)) {
System.out.println("OK received for OPTIONS");
}
}
} catch (Exception e) {
System.out.println("some exceptions");
}
}
/**
* This method is called by the SIP stack when a new request arrives.
*/
public void processRequest(RequestEvent evt) {
}
/**
* This method is called by the SIP stack when there's no answer
* to a message. Note that this is treated differently from an error
* message.
*/
public void processTimeout(TimeoutEvent evt) {
System.out.println("Timeout...");
}
/**
* This method is called by the SIP stack when there's an asynchronous
* message transmission error.
*/
public void processIOException(IOExceptionEvent evt) {
System.out.println("IO Exceptions");
}
/**
* This method is called by the SIP stack when a dialog (session) ends.
*/
public void processDialogTerminated(DialogTerminatedEvent evt) {
}
/**
* This method is called by the SIP stack when a transaction ends.
*/
public void processTransactionTerminated(TransactionTerminatedEvent evt)
{
}
public String getHost() {
String host = "127.0.0.1";
return host;
}
public int getPort() {
int port = 5060;
return port;
}
public String getUsername() {
return username;
}
public void setUsername(String newUsername) {
username = newUsername;
}
public static void main(String args[])
{
testSIP testsip = new testSIP("rajib");
try {
System.out.println("message send...");
testsip.sendMessage();
} catch (ParseException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
e.printStackTrace();
} catch (SipException e) {
e.printStackTrace();
}
}
}
--
Rajib Deka
Software Engineer
Servion Global Solution
Chennai, India
Mobile No: + 91 80157 09130
--
Rajib Deka
Software Engineer
Servion Global Solution
Chennai, India
Mobile No: + 91 80157 09130
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sipforum.org/pipermail/discussion/attachments/20100613/2af48ff9/attachment-0002.html>
More information about the discussion
mailing list