Pjsip通信如何使用TCP协议
来源:互联网 发布:复杂网络基础概论 编辑:程序博客网 时间:2024/05/29 09:27
Pjsip协议支持TCP、UDP等协议,默认情况下,PJSIP使用的是UDP协议,但是这会导致数据过长的时候会出现数据丢失的现象,很大的限制了Pjsip的通信。为此,我们要配置TCP通信。通信的时候要涉及两个阶段:登陆——发送消息;
1.登陆
public static void pjsipLogin(String sipName, String sipPassword, String sipDomain) { AccountConfig accCfg = new AccountConfig(); String acc_id = "sip:" + sipName + "@" + sipDomain + ";transport=tcp"; String registrar = "sip:" + sipDomain + ";transport=tcp" ; String proxy = ""; String username = sipName; String password = sipPassword; accCfg.setIdUri(acc_id); accCfg.getRegConfig().setRegistrarUri(registrar); AuthCredInfoVector creds = accCfg.getSipConfig().getAuthCreds(); creds.clear(); if (username.length() != 0) { creds.add(new AuthCredInfo("digest", "*", username, 0, password)); } StringVector proxies = accCfg.getSipConfig().getProxies(); proxies.clear(); if (proxy.length() != 0) { proxies.add(proxy); } accCfg.getNatConfig().setIceEnabled(true); try { account.modify(accCfg); } catch (Exception e) { e.printStackTrace(); }}
如代码所示,
String acc_id = "sip:" + sipName + "@" + sipDomain + ";transport=tcp";String registrar = "sip:" + sipDomain + ";transport=tcp" ;
两行代码末尾都要加上";transport = tcp",这样的话才能保证我们的注册的时候选择TCP通信;好了,登陆只是第一步,接下来是发送消息:
2.消息发送
public void pjsipSendMsg(final String content, String userId) { String buddy_uri = "<sip:" + userId + "@" + Constants.sipDomain + ";transport=tcp" + ">";
LogUtil.println(TAG + "pjsipSendMsg"," buddy_uri = " + buddy_uri); BuddyConfig bCfg = new BuddyConfig(); bCfg.setUri(buddy_uri); bCfg.setSubscribe(false); MyBuddy myBuddy = account.addBuddy(bCfg);
SendInstantMessageParam prm = new SendInstantMessageParam(); prm.setContent(content); try { // myBuddy.create(account, bCfg); myBuddy.sendInstantMessage(prm); myBuddy.delete(); } catch (Exception e) { e.printStackTrace(); return; }}
发送消息的时候,要先配置目标sip地址:+
String buddy_uri = "<sip:" + userId + "@" + Constants.sipDomain + ";transport=tcp" + ">";
在这行代码尾端也要添加";transport = tcp",这和我们登陆的时候sip账号尾端添加的是一致的哦,这样的话才能通过tcp协议将我们的消息发给目标用户哦! 1 0
- Pjsip通信如何使用TCP协议
- TCP和UDP两个协议在Java通信编程中是如何被使用的
- PJSIP协议栈在Linux下通信测试
- <>socket-通信-tcp协议
- Socket使用TCP/IP如何实现通信
- Symbian中使用TCP/IP协议进行通信
- Android socket通信 TCP协议
- TCP协议通信补充:多线程
- linux网络通信-----TCP协议
- 计算机通信:TCP/IP 协议:
- PJSIP协议研究
- SIP协议学习pjsip
- 如何学习 TCP 协议
- 【tcp-ip学习总结】使用tcp协议实现简单的通信小程序
- Android中基于TCP协议的网络通信之使用Socket进行通信
- Android中基于TCP协议的网络通信之使用Socket进行通信
- 如何使用网络单片机W7100A实现TCP通信?
- 套接字、UDP通信、TCP通信、TCP\IP协议簇
- maven update error:Cannot nest 'xxx/WEB-INF/classes' inside 'xxx'
- hdu 1007 平面最近点对 分治
- C语言修饰词之violate使用
- Linux系统工程师的必备素质
- POJ 2956 The Pilots Brothers' refrigerator
- Pjsip通信如何使用TCP协议
- spark配置文件加载的先后顺序
- AngularJS:何时应该使用Directive、Controller、Service?
- LocalBroadcastManager 的实现原理,还是 Binder?
- opencv Haartraining
- linux系统三大文本处理工具grep、sed及awk的简单介绍
- 【H5】html5的新增的标签和废除的标签
- InnoDB的compact行格式详解
- 每日安全简讯(20160726)