Jabber客户端出现身份验证问题c#

Jabber客户端出现身份验证问题c#,c#,xmpp,chat,publish-subscribe,C#,Xmpp,Chat,Publish Subscribe,下面给出的示例控制台应用程序使用jabber net client在验证连接后发送示例测试消息。 我在验证登录请求时收到错误。错误如下 “无法从传输连接读取数据:无法立即完成非阻塞套接字操作。” 我是这个XMPP的新手。网上有这么多的项目,但没有一个是相关的。 请提供有价值的信息或链接,这些信息或链接对于为我的应用程序开发免费jabber客户端库非常有用 示例代码附在下面 class Program { // we will wait on this event until we're

下面给出的示例控制台应用程序使用jabber net client在验证连接后发送示例测试消息。 我在验证登录请求时收到错误。错误如下

“无法从传输连接读取数据:无法立即完成非阻塞套接字操作。”

我是这个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();
    }
}

在代码示例中,使用sample@jabber.org作为用户名。这是完全赤裸裸的Jid。xmpp中的用户名(节点部分)仅为“@”前面的部分。因此,尝试使用sample作为用户名,而不是sample@jabber.org

j.User = "sample";
j.Server = "jabber.org";
j.Password = "secret";

我也照你说的做了。。我仍然收到同样的错误。“无法从传输连接读取数据:无法立即完成非阻塞套接字操作。”我认为问题在于正在使用的端口。如果指定端口。我收到以下错误。连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应208.68.163.220:420。然后,请将Xml调试输出附加到您的问题。然后我们可以查看它是否连接,以及它在哪里停止。如果在服务器属性中有talk.google.com,那么它必须是gmail.com,或者在使用google Appswave时,在jabber.net中启用SRV解析的google ID中@之后的任何内容?我认为208.68.163.220不是jabber.org的正确ip地址