2010-07-08 10 views
2

Je crée un client de discussion IRC et je souhaite saisir la liste d'utilisateurs ou simplement le nombre d'utilisateurs, comment puis-je procéder? C'est la méthode que je utilise pour se connecter au IRC:Obtenir le nombre d'utilisateurs à partir d'IRC

Private Sub IRCConnect() 
     Dim stream As NetworkStream 
     Dim irc As TcpClient 
     Dim reader As StreamReader 
     Try 
      irc = New TcpClient(SERVER, PORT) 
      stream = irc.GetStream() 
      reader = New StreamReader(stream) 
      writer = New StreamWriter(stream) 
      ' Start PingSender thread 
      Dim ping As New PingSender 
      ping.Start() 
      writer.WriteLine(USER) 
      writer.Flush() 
      writer.WriteLine("NICK " & Config.Nickname) 
      writer.Flush() 
      writer.WriteLine("JOIN " & Config.Channel & " " & Config.ChanPass) 
      writer.Flush() 
      txtView.Text = txtView.Text & ">Connected successfully." & vbNewLine 
      HighlightPhrase(txtView, "Connected successfully.", Color.Lime) 
      Thread.Sleep(2000) 
     Catch Ex As Exception 
      ' Show the exception, sleep for a while and try to establish a new connection to irc server 
      txtView.Text = txtView.Text & ">ERROR: Unexpected error occured: " & Ex.ToString & vbNewLine 
      HighlightPhrase(txtView, "Unexpected error occured: " & Ex.ToString, Color.Red) 
     End Try 
    End Sub 

Je ne sais pas où commencer, toute aide serait appréciée.

+0

Cela a-t-il fonctionné pour vous maintenant? – Erik

+0

toute solution finale avec le code source complet? – Kiquenet

Répondre

4

Le IRC protocole est défini dans RFC2812: http://tools.ietf.org/html/rfc2812

Envoyer les « noms #currentchannel » - commande (http://tools.ietf.org/html/rfc2812#section-3.2.5) et vous recevrez une liste de tous les utilisateurs visibles. Cette liste peut être compté et voilà - là vous avez votre nombre d'utilisateurs

+0

Je n'étais pas au courant de cette commande, très appréciée mais comment puis-je lire depuis la sortie du serveur IRC? – Ben

+0

imho vous avez le "lecteur" (New StreamReader (flux)) où vous devriez recevoir les "réponses" du serveur – Erik

+0

Lorsque vous tentez de récupérer lecteur.ReadToEnd l'application ne répond pas ("ne répond pas"). – Ben

1

Commencez par lire les spécifications pour IRC, it is RFC 2812.

Vous devez utiliser le message NAMES. Here is the appropriate section de la RFC.

+0

Lorsque vous rejoignez un canal, la réponse NAMES est envoyée automatiquement. La seule raison de l'envoyer à plusieurs reprises serait de mettre à jour le nombre d'utilisateurs. Généralement, c'est un gaspillage, car vous pouvez simplement suivre JOIN, PART, KICK et QUIT pour garder un total cumulé dans votre programme à la place ... – braindigitalis