认证c#的Jabber客户端问题
本文关键字:客户端 问题 Jabber 认证 | 更新日期: 2023-09-27 18:10:57
下面给出的示例控制台应用程序使用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();
}
}
在代码示例中,您使用sample@jabber.org作为用户名。这是一个完整的裸机。xmpp中的用户名(节点部分)仅为@前面的部分。所以尝试使用sample作为用户名,而不是sample@jabber.org。
j.User = "sample";
j.Server = "jabber.org";
j.Password = "secret";