ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:39.20KB ,
资源ID:24066542      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24066542.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(送给sip学习者sip实例.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

送给sip学习者sip实例.docx

1、送给sip学习者sip实例网站上关于基于sip的java编程实例实在是太少了,这个严重影响了sip的传播和发展,所以我上传了这个小实验,让大家参考下。在做实验前,我们需要一些东西:我的环境:XPEclipse需要包:这个需要在网上自己找,或者hi我,我也可以给你们哈。-XX账号:时光可见好了,现在看程序了哈,主要是三个文件。MessageProcessor.java :public interface MessageProcessor public void processMessage(String sender, String message); public void processEr

2、ror(String errorMessage); public void processInfo(String infoMessage);SipLayer.java :import java.text.ParseException;import java.util.*;import javax.sip.*;import javax.sip.address.*;import javax.sip.header.*;import javax.sip.message.*;public class SipLayer implements SipListener private MessageProce

3、ssor messageProcessor; private String username; private SipStack sipStack; private SipFactory sipFactory; private AddressFactory addressFactory; private HeaderFactory headerFactory; private MessageFactory messageFactory; private SipProvider sipProvider; /* Here we initialize the SIP stack. */ public

4、 SipLayer(String username, String ip, int port) throws PeerUnavailableException, TransportNotSupportedException, InvalidArgumentException, ObjectInUseException, TooManyListenersException setUsername(username); sipFactory = SipFactory.getInstance(); sipFactory.setPathName(gov.nist); Properties proper

5、ties = new Properties(); properties.setProperty(javax.sip.STACK_NAME, TextClient); properties.setProperty(javax.sip.IP_ADDRESS, ip); / DEBUGGING: Information will go to files / textclient.log and textclientdebug.log properties.setProperty(gov.nist.javax.sip.TRACE_LEVEL, 32); properties.setProperty(g

6、ov.nist.javax.sip.SERVER_LOG, textclient.txt); properties.setProperty(gov.nist.javax.sip.DEBUG_LOG, textclientdebug.log); sipStack = sipFactory.createSipStack(properties); headerFactory = sipFactory.createHeaderFactory(); addressFactory = sipFactory.createAddressFactory(); messageFactory = sipFactor

7、y.createMessageFactory();/ ListeningPoint tcp = sipStack.createListeningPoint(port, tcp); ListeningPoint udp = sipStack.createListeningPoint(port, udp); / sipProvider = sipStack.createSipProvider(tcp); / sipProvider.addSipListener(this); / suppose UDP is used as transport, Bob Cheng, 03-11-10 sipPro

8、vider = sipStack.createSipProvider(udp); sipProvider.addSipListener(this); /* * This method uses the SIP stack to send a message. */ public void sendMessage(String to, String message) throws ParseException, InvalidArgumentException, SipException SipURI from = addressFactory.createSipURI(getUsername(

9、), getHost() + : + getPort(); Address fromNameAddress = addressFactory.createAddress(from); fromNameAddress.setDisplayName(getUsername(); FromHeader fromHeader = headerFactory.createFromHeader(fromNameAddress, textclientv1.0); String username = to.substring(to.indexOf(:) + 1, to.indexOf(); String ad

10、dress = to.substring(to.indexOf() + 1); SipURI toAddress = addressFactory.createSipURI(username, address); Address toNameAddress = addressFactory.createAddress(toAddress); toNameAddress.setDisplayName(username); ToHeader toHeader = headerFactory.createToHeader(toNameAddress, null); SipURI requestURI

11、 = addressFactory.createSipURI(username, address); requestURI.setTransportParam(udp); ArrayList viaHeaders = new ArrayList(); ViaHeader viaHeader = headerFactory.createViaHeader(getHost(), getPort(), udp, branch1); viaHeaders.add(viaHeader); CallIdHeader callIdHeader = sipProvider.getNewCallId(); CS

12、eqHeader cSeqHeader = headerFactory.createCSeqHeader(1, Request.MESSAGE); MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70); Request request = messageFactory.createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); S

13、ipURI contactURI = addressFactory.createSipURI(getUsername(), getHost(); contactURI.setPort(getPort(); Address contactAddress = addressFactory.createAddress(contactURI); contactAddress.setDisplayName(getUsername(); ContactHeader contactHeader = headerFactory.createContactHeader(contactAddress); requ

14、est.addHeader(contactHeader); ContentTypeHeader contentTypeHeader = headerFactory.createContentTypeHeader(text, plain); request.setContent(message, contentTypeHeader); sipProvider.sendRequest(request); /* This method is called by the SIP stack when a response arrives. */ public void processResponse(

15、ResponseEvent evt) Response response = evt.getResponse(); int status = response.getStatusCode(); if (status = 200) & (status 300) / Success! messageProcessor.processInfo(-Sent); return; messageProcessor.processError(Previous message not sent: + status); /* * This method is called by the SIP stack wh

16、en a new request arrives. */ public void processRequest(RequestEvent evt) Request req = evt.getRequest(); String method = req.getMethod(); if (!method.equals(MESSAGE) / bad request type. messageProcessor.processError(Bad request type: + method); return; FromHeader from = (FromHeader) req.getHeader(F

17、rom); messageProcessor.processMessage(from.getAddress().toString(), new String(req.getRawContent(); Response response = null; try / Reply with OK response = messageFactory.createResponse(200, req); ToHeader toHeader = (ToHeader) response.getHeader(ToHeader.NAME); toHeader.setTag(888); / This is mand

18、atory as per the spec. ServerTransaction st = sipProvider.getNewServerTransaction(req); st.sendResponse(response); catch (Throwable e) e.printStackTrace(); messageProcessor.processError(Cant send OK reply.); /* * This method is called by the SIP stack when theres no answer to a * message. Note that

19、this is treated differently from an error message. */ public void processTimeout(TimeoutEvent evt) messageProcessor .processError(Previous message not sent: + timeout); /* * This method is called by the SIP stack when theres an asynchronous * message transmission error. */ public void processIOExcep

20、tion(IOExceptionEvent evt) messageProcessor.processError(Previous message not sent: + I/O Exception); /* * 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 transac

21、tion ends. */ public void processTransactionTerminated(TransactionTerminatedEvent evt) public String getHost() int port = sipProvider.getListeningPoint().getPort(); String host = sipStack.getIPAddress(); return host; public int getPort() int port = sipProvider.getListeningPoint().getPort(); return p

22、ort; public String getUsername() return username; public void setUsername(String newUsername) username = newUsername; public MessageProcessor getMessageProcessor() return messageProcessor; public void setMessageProcessor(MessageProcessor newMessageProcessor) messageProcessor = newMessageProcessor; T

23、extClient.java :import java.awt.event.*;import javax.swing.*;import .InetAddress;public class TextClient extends JFrame implements MessageProcessor private SipLayer sipLayer; private JTextField fromAddress; private JLabel fromLbl; private JLabel receivedLbl; private JTextArea receivedMessages; priva

24、te JScrollPane receivedScrollPane; private JButton sendBtn; private JLabel sendLbl; private JTextField sendMessages; private JTextField toAddress; private JLabel toLbl; public static void main(String args) if (args.length != 2) printUsage(); System.exit(-1); try String username = args0; int port = I

25、nteger.parseInt(args1); String ip = InetAddress.getLocalHost().getHostAddress(); System.out.println(-username = +username +n-port = +port +n-ip = +ip); SipLayer sipLayer = new SipLayer(username, ip, port); TextClient tc = new TextClient(sipLayer); sipLayer.setMessageProcessor(tc); / tc.show(); tc.se

26、tVisible(true); catch (Throwable e) System.out.println(Problem initializing the SIP stack.); e.printStackTrace(); System.exit(-1); private static void printUsage() System.out.println(Syntax:); System.out.println( java -jar textclient.jar ); System.out.println(where is the nickname of this user); Sys

27、tem.out.println(and is the port number to use. Usually 5060 if not used by another process.); System.out.println(Example:); System.out.println( java -jar textclient.jar snoopy71 5061); public TextClient(SipLayer sip) super(); sipLayer = sip; initWindow(); String from = sip: + sip.getUsername() + + s

28、ip.getHost() + : + sip.getPort(); this.fromAddress.setText(from); private void initWindow() receivedLbl = new JLabel(); sendLbl = new JLabel(); sendMessages = new JTextField(); receivedScrollPane = new JScrollPane(); receivedMessages = new JTextArea(); fromLbl = new JLabel(); fromAddress = new JText

29、Field(); toLbl = new JLabel(); toAddress = new JTextField(); sendBtn = new JButton(); getContentPane().setLayout(null); setTitle(TextClient); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) System.exit(0); ); receivedLbl.setText(Received Messages:); receivedLbl.setAlignmentY(0.0F); receivedLbl.setPreferredSize(new java.awt.Dimension(25, 100); getContentPane().add(receivedLbl); receivedLbl.setBounds(5, 0, 136, 20); sendLbl.setText(Send Message:); getContentPane().add(sendLbl); sendLb

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1