您的位置:首页 > 理论基础 > 计算机网络

Pjsip通信如何使用TCP协议

2016-07-26 11:18 363 查看
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协议将我们的消息发给目标用户哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Pjsip Android TCP UDP 通信