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

¿Por qué mi bot IRC no se conecta?¿Por qué mi bot IRC no se conecta?

+0

Lo te hace pensar que no se está conectando? Hay un error? –

+0

compruebe si el puerto 6667 está bloqueado. En mi caso, estoy detrás de un servidor proxy que ha bloqueado 6667. por lo que no puedo conectarme a IRC en 6667. –

+0

@Mr. Sharp: ¿tu bot no se conecta? es decir: si '/ who Testing' (creo que es el comando correcto) ¿no está allí? Si lees de StreamReader, ¿recibes algún mensaje de error del servidor? –

Respuesta

3

El protocolo IRC quiere pares CR/LF, mientras que el comportamiento predeterminado para StreamWriter es solo alimentaciones de línea. Debe crear su StreamWriter así:

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

Además, probablemente debería especificar un nombre de usuario con el comando USUARIO antes de unirse a un canal, aunque no estoy seguro si es completamente necesario:

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

Este último se puede verificar en el RFC o si se está conectando a un daemon de IRC en particular, también se puede hacer referencia a su documentación. – JonathanK

Cuestiones relacionadas