2010-02-27 5 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); 
} 

Warum verbindet sich mein IRC-Bot nicht?Warum verbindet sich mein IRC-Bot nicht?

+0

Was lässt Sie denken, dass es nicht verbindet? Gibt es einen Fehler? –

+0

überprüfen, ob Port 6667 blockiert ist. In meinem Fall bin ich hinter einem Proxy-Server, der 6667 blockiert hat. So kann ich keine Verbindung zu IRC auf 6667 herstellen. –

+0

@Mr. Sharp: Verbindet Ihr Bot tatsächlich nicht? zB: Wenn du '/ wer Testing' (ich glaube das ist der richtige Befehl) ist er nicht da? Wenn Sie vom StreamReader lesen, erhalten Sie Fehlermeldungen vom Server? –

Antwort

3

Das IRC-Protokoll benötigt CR/LF-Paare, während das Standardverhalten für StreamWriter nur Zeilenvorschub ist. Sie sollten Ihre Stream wie folgt erstellen:

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

Zusätzlich sollten Sie wahrscheinlich einen Benutzernamen mit dem Befehl USER angeben, bevor ein Kanal verbindet, obwohl ich nicht sicher bin, ob es vollständig notwendig ist:

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

Letzteres kann im RFC überprüft werden oder wenn Sie eine Verbindung zu einem bestimmten IRC-Daemon herstellen, kann auch auf dessen Dokumentation verwiesen werden. – JonathanK