2010-07-09 8 views
3

J'essaie de commencer en utilisant agsXMPP, mais j'ai quelques problèmes. Je suis en train d'exécuter ce code:Pourquoi ne puis-je pas me connecter à Google Talk dans agsXMPP?

using System; 
using agsXMPP; 

namespace TestAgs 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      XmppClientConnection connection = new XmppClientConnection(); 
      connection.OnLogin += delegate { 
       Console.WriteLine ("logged in"); 
      }; 
      connection.Server = "gmail.com"; 
      connection.ConnectServer = "talk.google.com"; 
      connection.Username = "my username"; // I tried both with and without '@gmail.com' 
      connection.Password = "my password"; 
      connection.Open(); 
     } 
    } 
} 

Cette compile très bien, mais lorsque je tente de l'exécuter, rien ne se passe. Il s'exécute et se termine sans aucune erreur, mais "connecté" n'est jamais imprimé sur la console. Qu'est-ce que je fais mal?

Si cela fait une différence, j'utilise Mono 2.4 sur Ubuntu 10.04.

Répondre

4

Sauf connexion bloque() blocs, dont je doute, le problème est que votre programme atteint la fin de main, et donc il est fait en cours d'exécution et se termine.

Comment vous voulez garder de sortir dépend de ce que vous essayez de faire, mais d'une façon serait ManualResetEvent:

var mre = new System.Threading.ManualResetEvent (false); 
mre.WaitOne(); 

Bien sûr, vous pouvez maintenant avoir le problème inverse, il n'y a pas moyen pour votre application de terminer.

1

Je pense que le problème est le numéro de port. Vous n'avez pas fourni 5222 ou 5223 dans la connexion.

+0

Merci Pujan, avec l'astuce de jpobst, cela fonctionne avec ou sans le numéro de port. –

+0

Le numéro de port est défini par défaut dans Jabber References. – RobertPitt

1

ajoutez simplement Console.ReadLine(); après la ligne 'connection.Open();'

0
// connection.Server = "gmail.com"; 
connection.ConnectServer = "talk3.l.google.com"; OR 
connection.ConnectServer = "talk2.l.google.com"; 
connection.Username = "my username"; // I tried both with and without '@gmail.com' 
connection.Password = "my password"; 
connection.Open(); 

talk3.l.google a bien fonctionné pour moi.