Ниже приведен пример консольного приложения, использующего jabber-net client для отправки тестового тестового сообщения после аутентификации соединения. Я получаю ошибку при аутентификации запроса на вход. Ниже приведена ссылка.Проблема клиента Jabber с аутентификацией C#
«Невозможно прочитать данные из транспортного соединения: неблокируемые операции сокета не может быть завершены немедленно.»
Я новичок в этот 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 = "[email protected]";
static void Main(string[] args)
{
JabberClient j = new JabberClient();
j.User = "[email protected]";
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();
}
}
Я сделал то же, что и вы сказал. Тем не менее, я получаю ту же ошибку. ** «Невозможно прочитать данные из транспортного соединения: немедленная операция блокировки сокета не может быть завершена». ** Я думаю, что проблема связана с используемым портом. – csLijo
если я укажу порт. Я получаю следующую ошибку. ** Не удалось выполнить попытку подключения, так как подключенная сторона не ответила должным образом через какое-то время или не удалось установить соединение, потому что подключенный хост не смог ответить 208.68.163.220:420** – csLijo
, а затем приложите свой вывод отладки Xml к своему вопрос. Затем мы видим, что он вообще получает соединение и где он останавливается. – Alex