Pjsip通信如何使用TCP协议
2016-07-26 11:18
363 查看
Pjsip协议支持TCP、UDP等协议,默认情况下,PJSIP使用的是UDP协议,但是这会导致数据过长的时候会出现数据丢失的现象,很大的限制了Pjsip的通信。为此,我们要配置TCP通信。通信的时候要涉及两个阶段:登陆——发送消息;
1.登陆
如代码所示,
两行代码末尾都要加上";transport = tcp",这样的话才能保证我们的注册的时候选择TCP通信;
好了,登陆只是第一步,接下来是发送消息:
2.消息发送
发送消息的时候,要先配置目标sip地址:+
在这行代码尾端也要添加";transport = tcp",这和我们登陆的时候sip账号尾端添加的是一致的哦,这样的话才能通过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协议将我们的消息发给目标用户哦!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories