Pjsip通信如何使用TCP协议

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值