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

Perché il bot IRC non si connette?Perché il mio IRC bot non si connette?

+0

Cosa ti fa pensare che non si stia connettendo? C'è un errore? –

+0

controllare se la porta 6667 è bloccata. Nel mio caso, sono dietro un server proxy che ha bloccato 6667. quindi non riesco a collegarmi a IRC su 6667. –

+0

@Mr. Sharp: il tuo bot non si connette realmente? vale a dire: se tu/chi stai provando (penso che sia il comando giusto) non è lì? Se leggi da StreamReader ricevi messaggi di errore dal server? –

risposta

3

Il protocollo IRC richiede coppie CR/LF, mentre il comportamento predefinito per StreamWriter è rappresentato dai feed di riga. Si dovrebbe creare il tuo StreamWriter in questo modo:

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

Inoltre, probabilmente si dovrebbe specificare un nome utente con il comando USER prima di entrare in un canale, anche se non sono sicuro se è tutto necessario:

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

Quest'ultimo può essere controllato nell'RFC o se ci si sta connettendo a un particolare daemon IRC, è possibile fare riferimento anche alla sua documentazione. – JonathanK