2010-02-27 9 views
7
public static string SERVER = "irc.rizon.net"; 
private static int PORT = 6667; 
private static string USER = "Test C# Irc bot"; 
private static string NICK = "Testing"; 
private static string CHANNEL = "#Test0x40"; 

public static void Main(string[] args) 
{ 
    NetworkStream stream; 
    TcpClient irc; 
    StreamReader reader; 
    StreamWriter writer; 

    irc = new TcpClient(SERVER, PORT); 
    stream = irc.GetStream(); 
    reader = new StreamReader(stream); 
    writer = new StreamWriter(stream); 

    writer.WriteLine("NICK " + NICK); 
    writer.Flush(); 
    writer.WriteLine("JOIN " + CHANNEL); 
    writer.Flush(); 

    Console.ReadKey(true); 
} 

Pourquoi mon robot IRC ne se connecte-t-il pas?Pourquoi mon robot IRC ne se connecte-t-il pas?

+0

Qu'est-ce que vous fait penser que ça ne se connecte pas? Y a-t-il une erreur? –

+0

Vérifiez si le port 6667 est bloqué. Dans mon cas, je suis derrière un serveur proxy qui a bloqué 6667. donc je ne peux pas me connecter à IRC sur 6667. –

+0

@Mr. Sharp: Votre bot ne se connecte-t-il pas réellement? c'est-à-dire: Si vous/qui Testing (je pense que c'est la bonne commande) n'est-il pas là? Si vous lisez dans le StreamReader obtenez-vous des messages d'erreur du serveur? –

Répondre

3

Le protocole IRC veut des paires CR/LF, alors que le comportement par défaut de StreamWriter est juste des sauts de ligne. Vous devez créer votre StreamWriter comme ceci:

writer = new StreamWriter(stream) { NewLine = "\r\n", AutoFlush = true }; 

De plus, vous devez spécifier probablement un nom d'utilisateur avec la commande USER avant de se joindre à un canal, bien que je ne suis pas sûr si elle est tout à fait nécessaire:

writer.WriteLine("USER username +mode * :Real Name"); 
+0

Ce dernier peut être vérifié dans la RFC ou si vous vous connectez à un démon IRC particulier, sa documentation peut également être référencée. – JonathanK