4

これはここに投稿することに関してです

PCをローカルのtigaseサーバーセットアップにローカルに接続できます(Smack APIを使用しています)。現在、AndroidフォンをWi-Fi経由でそのサーバーに接続したいときに問題が発生しています。クライアントBeemforandroidを使用してローカルサーバーに接続できます。サーバーのXMPPドメイン名はPC名「mwbn43-1」、IPアドレスは「192.168.0.221」です(このサーバーにpingを実行できます。 Androidターミナルエミュレータ)。Beem設定には、接続したいサーバー(IPアドレスとして指定)を指定できる詳細オプションがあります。このオプションを設定しないと、接続できません。これが、 Androidクライアントに使用したコード。

    XMPPConnection.DEBUG_ENABLED = true;
    ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1",5222);

    //ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.221",5222);             
    config.setSASLAuthenticationEnabled(false);
    config.setCompressionEnabled(false);

    XMPPConnection xmpp = new XMPPConnection(config);

    try {

            xmpp.connect(); 

            xmpp.login("admin@mwbn43-1", "tigase");
            String host = xmpp.getHost();
            String id = xmpp.getConnectionID();
            int port = xmpp.getPort();
            boolean i = false;
            i = xmpp.isConnected();
            if(i)
            {answer = "Connected to " + host + " via port " + port + " with ID " + id;
            answerfield.setText(answer);}

          }//end try 
    catch (XMPPException e) {  
     answerfield.setText("Failed to connect");
     Log.v(TAG, "Failed to connect to " + xmpp.getHost());
            e.printStackTrace();

このコードを使用してgoogleトークサーバーに接続することもできます。ローカルサーバーに接続しているときに、接続するホスト名とIPアドレスを指定してみました。IPアドレス(192.168.0.221)を指定すると、「応答がありません」 「サーバーエラーから」とstream:error(host-unknown)を指定し、ホスト名(mwbn43-1)を指定すると、「remote-server-timeout(504)」とホストが未解決になります。

Beemのコードを調べてサーバーとの接続方法を確認しましたが、あまり見つかりませんでした。インターネットのユーザー権限も付与しました。ローカルサーバーと通信するために追加するコード行を教えてください。

4

5 に答える 5

6

3つの引数のConnectionConfigurationコンストラクターを試してください。ホスト、ポート、ドメインを指定できます。ホストとドメインは同じ値である必要はありません。あなたの場合、私は推測します:

ConnectionConfiguration config = 
  new ConnectionConfiguration("192.168.0.221",5222,"mwbn43-1");
于 2010-10-09T07:05:52.453 に答える
2

ログイン呼び出しからホスト名を削除してみてください。

たとえば、

connection.login("username", "password");

それ以外の

connection.login("username@host.com", "password");
于 2011-12-27T05:23:37.167 に答える
0

ネイティブの smack jar を使用していないことを確認してください。Android では動作しません。asmack またはその祖先のいずれかを使用してみてください。

于 2011-12-28T19:11:12.727 に答える
0

適切な権限を宣言しているかどうかを確認してください: android.permission.INTERNET

于 2013-06-26T13:47:31.457 に答える
0

ConnectionConfigurationに 3 つの引数コンストラクターを使用します。ホスト名拡張子なしで資格情報を渡します。

たとえば、以下のコードを参照してください。

ConnectionConfiguration config = new ConnectionConfiguration("hostname/IP address", 5222, "servicename/domainname");  
connection = new XMPPConnection(config);  
connection.connect();  
connection.login("user1", "password");`
于 2012-03-20T03:28:27.420 に答える