2

我正在尝试实现一个简单的 Android 应用程序,它可以在为 Openfire 服务器编写的插件之间发送和接收数据包。该插件旨在从客户端接收数据包以进行进一步处理。所以这不是聊天。以下代码片段显示了我向服务器发送数据包的方式:

ConnectionConfiguration configuration = new ConnectionConfiguration(
        HOST, PORT);
Connection connection = new XMPPConnection(configuration);
try {
    connection.connect();
} catch (XMPPException e) {
    e.printStackTrace();
}
if (connection.isConnected()) {
    Packet packet = new Message();
    packet.setFrom("123456789@localhost");
    packet.setTo("987654321@component.localhost");
    connection.sendPacket(packet);
    connection.disconnect();
}

HOST 和 PORT 是预定义的常量。

我尝试在插件内的 if 子句中使用代码,它运行良好 - 组件接收数据包并与它们一起工作。但是,在我的 Android 应用程序中,此代码不起作用 - 数据包无法到达组件。

所以,伙计们,如果您有任何建议,我将非常感谢您的帮助。也许我在某处使用了错误的技术——我是 XMPP 和 Openfire 的新手。


更新

应用程序清单中有所有需要的权限。HOST 等于运行 Openfire 服务器的 PC 的静态 IP 地址。

private static final String HOST = "192.168.1.100";
private static final int PORT = 5222;
4

2 回答 2

0

为了将数据包发送到服务器,您应该使用login()或类loginAnonymously()方法登录到它org.jivesoftware.smack.Connection

谢谢先生。流的提示。

于 2012-08-11T11:17:41.310 回答
0

连接和断开

// Create the configuration for this new connection
ConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);
config.setCompressionEnabled(true);
config.setSASLAuthenticationEnabled(true);

Connection connection = new XMPPConnection(config);
// Connect to the server
connection.connect();
// Log into the server
connection.login("username", "password", "SomeResource");
....
// Disconnect from the server
connection.disconnect();
</code>

你应该先登录,这里是管理连接的指南http://www.igniterealtime.org/builds/smack/docs/latest/documentation/connections.html

于 2012-08-29T06:33:39.730 回答