0

次に示すのは、接続の認証後にサンプル テスト メッセージを送信するために jabber-net クライアントを使用するサンプル コンソール アプリケーションです。ログイン リクエストの認証中にエラーが発生しました。以下にエラーを示します。

「トランスポート接続からデータを読み取れません: 非ブロッキング ソケット操作をすぐに完了できませんでした。」

私はこの XMPP を初めて使用します。非常に多くのプロジェクトがオンラインで入手できますが、どれも関連性がありませんでした. 私のアプリケーション用の無料の jabber クライアント ライブラリを開発するのに役立つ貴重な情報またはリンクを提供してください。

以下にサンプルコードを添付します!

class Program
{
    // we will wait on this event until we're done sending
    static ManualResetEvent done = new ManualResetEvent(false);
    // if true, output protocol trace to stdout
    const bool VERBOSE = true;
    const string TARGET = "sample@example.com";


    static void Main(string[] args)
    {
        JabberClient j = new JabberClient();
        j.User = "sample@jabber.org";
        j.Server = "jabber.org"; // use gmail.com for GoogleTalk
        j.Password = "samplePassword";


        // don't do extra stuff, please.
        j.AutoPresence = false;
        j.AutoRoster = false;
        j.AutoReconnect = 30;

        // listen for errors.  Always do this!
        j.OnError += new bedrock.ExceptionHandler(j_OnError);

        // what to do when login completes
        j.OnAuthenticate += new bedrock.ObjectHandler(j_OnAuthenticate);

        // listen for XMPP wire protocol
        if (VERBOSE)
        {
           // j.OnLoginRequired += new bedrock.ObjectHandler(j_OnLoginRequired);
            j.OnReadText += new bedrock.TextHandler(j_OnReadText);
            j.OnWriteText += new bedrock.TextHandler(j_OnWriteText);
        }

        // Set everything in motion
        j.Connect();

        // wait until sending a message is complete
        done.WaitOne();

        // logout cleanly
        j.Close();
    }

    static void j_OnWriteText(object sender, string txt)
    {
        if (txt == " ") return;  // ignore keep-alive spaces
        Console.WriteLine("SEND: " + txt);
    }

    static void j_OnReadText(object sender, string txt)
    {
        if (txt == " ") return;  // ignore keep-alive spaces
        Console.WriteLine("RECV: " + txt);
    }

    static void j_OnAuthenticate(object sender)
    {
        // Sender is always the JabberClient.
        JabberClient j = (JabberClient)sender;
        j.Message(TARGET, "test");

        // Finished sending.  Shut down.
        done.Set();
    }

    static void j_OnError(object sender, Exception ex)
    {
        // There was an error!
        Console.WriteLine("Error: " + ex.ToString());

        // Shut down.
        done.Set();
    }
}
4

1 に答える 1

1

コード例では、sample@jabber.orgをユーザー名として使用します。これが完全な裸のジッドです。xmpp のユーザー名(ノード部分)は「@」より前の部分のみです。したがって、ユーザー名としてsample@jabber.orgの代わりにsampleを使用してみてください。

j.User = "sample";
j.Server = "jabber.org";
j.Password = "secret";
于 2013-04-27T13:19:11.200 に答える