Android使用smack连接openfire(本地+远程)

1. 依赖

使用smack4.3.4,实测这两条足矣

implementation "org.igniterealtime.smack:smack-tcp:4.3.4"
implementation "org.igniterealtime.smack:smack-android-extensions:4.3.4"

可将第二条替换为这个,轻量些,不想麻烦直接用上面的即可。

implementation "org.igniterealtime.smack:smack-android:4.3.4"

2. 本地连接

网络访问应该写在线程中,虽然这个不写在线程里也不报错,偷个懒。

//Config
public static final String C_HOST = "192.168.1.11";//服务器在局域网中IP
public static final String C_DOMAIN = "up55";//服务器主机名
public static final String C_SOURCE = "test";//源,可忽略
try {
    System.out.println("正在连接Chat服务。。。");
    XMPPTCPConnectionConfiguration configuration = XMPPTCPConnectionConfiguration.builder()
            .setResource(Resourcepart.from(C_SOURCE))//固定源
            .setHostAddress(InetAddress.getByName(C_HOST))
            .setXmppDomain(C_DOMAIN)
            .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
            .build();
    connection = new XMPPTCPConnection(configuration);
    connection.connect();
    System.out.println("Chat服务连接成功");
} catch (Exception e) {
    System.out.println("Chat服务连接失败" + e.getLocalizedMessage());
    e.printStackTrace();
}

3. 远程连接

需指定端口,否则会报错,连接超时,具体原因未知,在java中测试时不加端口号也可正常运行,移到Android中却不行,感兴趣的同学自行探究,有结果别忘艾特我一下。

//Config
public static final String C_HOST = "20.0.0.2";//服务器公网IP
public static final int C_PORT = 5222;//端口
public static final String C_DOMAIN = "up55";//服务器主机名
public static final String C_SOURCE = "YunShang";//源,可忽略
try {
    System.out.println("正在连接Chat服务。。。");
    XMPPTCPConnectionConfiguration configuration = XMPPTCPConnectionConfiguration.builder()
            .setResource(Resourcepart.from(C_SOURCE))//固定源
            .setHostAddress(InetAddress.getByName(C_HOST))
            .setPort(C_PORT)//增加了端口号
            .setXmppDomain(C_DOMAIN)
            .setSendPresence(false)//以离线方式登录,以便获取离线消息
            .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
            .build();
    connection = new XMPPTCPConnection(configuration);
    connection.connect();
    System.out.println("Chat服务连接成功");
} catch (Exception e) {
    System.out.println("Chat服务连接失败" + e.getLocalizedMessage());
    e.printStackTrace();
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值