java实现SIP一个例子
(如果你贴子有附件,请一定按照下面模板发贴,否则贴子会被立刻删除,谢谢合作!)
【资料名称】: 【作者】: 【语言】: 【页数】: 【格式】: 【发表时间】: 【摘要或目录】:
(请根据需要,保留上面的相应选项)
package com.voip.sipphone;
import gov.nist.javax.sip.address.SipUri; import gov.nist.javax.sip.header.CSeq; import gov.nist.javax.sip.header.Contact; import gov.nist.javax.sip.header.ContentLength; import gov.nist.javax.sip.header.ContentType;
import gov.nist.javax.sip.header.From; import gov.nist.javax.sip.header.Via; import java.text.ParseException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.Properties; import java.util.Timer; import javax.sip.*;
import javax.sip.address.Address; import javax.sip.address.AddressFactory;
import javax.sip.address.URI; import javax.sip.header.CallIdHeader; import javax.sip.header.ContactHeader; import javax.sip.header.ExpiresHeader; import javax.sip.header.FromHeader; import javax.sip.header.Header; import javax.sip.header.HeaderFactory; import javax.sip.header.MaxForwardsHeader;
import javax.sip.header.RecordRouteHeader;
import javax.sip.header.ToHeader; import javax.sip.header.ViaHeader; import javax.sip.message.MessageFactory;
import javax.sip.message.Request; import javax.sip.message.Response; public class SipPhone implements SipListener
{
public void processDialogTerminated(DialogTerminatedEvent arg0) {
// TODO Auto-generated method stub
System.out.println(\
}
public void processIOException(IOExceptionEvent arg0) {
// TODO Auto-generated method stub
System.out.println(\
} /**
* 保存当前注册的用户
*/
private static Hashtable
/**
* @author software
* 注册定时器
*/
class TimerTask extends Timer
{ /**
* default constructor
*/
public TimerTask()
{
} /**
* 如果定时任务到,则删除该用户的注册信息
*/
public void run()
{ } } /**
* 服务器侦听IP地址
*/
private String ipAddr = \
/**
* 服务器侦听端口
*/
private int port = 5060;
/**
* 处理register请求 * @param request 请求消息
*/
private void processRegister(Request request, RequestEvent requestEvent)
{
if (null == request)
{
System.out.println(\
return;
}
//System.out.println(\
ServerTransaction serverTransactionId = requestEvent.getServerTransaction();
try {
Response response = null;
ToHeader head = (ToHeader)request.getHeader(ToHeader.NAME);
Address toAddress = head.getAddress();
URI toURI = toAddress.getURI();
ContactHeader contactHeader = (ContactHeader) request.getHeader(\
Address contactAddr = contactHeader.getAddress();
URI contactURI = contactAddr.getURI();
System.out.println(\
contactURI);
int expires = request.getExpires().getExpires(); // 如果expires不等于0,则为注册,否则为注销。 if (expires != 0 || contactHeader.getExpires() != 0)
{
currUser.put(toURI, contactURI);
System.out.println(\
} else {
currUser.remove(toURI);
System.out.println(\
}
response = msgFactory.createResponse(200, request);
System.out.println(\
if(serverTransactionId == null)
{
serverTransactionId = sipProvider.getNewServerTransaction(request);
serverTransactionId.sendResponse(response);
//serverTransactionId.terminate();
System.out.println(\
} else {
System.out.println(\
} }
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SipException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvalidArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} } /**
* 处理invite请求 * @param request 请求消息
*/
private void processInvite(Request request, RequestEvent requestEvent)
{
if (null == request)
{
System.out.println(\
return;
}