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

Tại sao rô-bốt IRC của tôi không kết nối?Tại sao bot IRC của tôi không kết nối?

+0

gì làm cho bạn nghĩ rằng nó không kết nối? Có lỗi không? –

+0

kiểm tra xem cổng 6667 có bị chặn không. Trong trường hợp của tôi, tôi đứng sau một máy chủ proxy đã chặn 6667. vì vậy tôi không thể kết nối với IRC trên 6667. –

+0

@Mr. Sharp: bot của bạn có thực sự không kết nối không? tức là: Nếu bạn '/ người thử nghiệm' (tôi nghĩ đó là lệnh đúng) là anh ta không có? Nếu bạn đọc từ StreamReader, bạn có nhận được bất kỳ thông báo lỗi nào từ máy chủ không? –

Trả lời

3

Giao thức IRC muốn các cặp CR/LF, trong khi hành vi mặc định cho StreamWriter chỉ là nguồn cấp dữ liệu dòng. Bạn nên tạo StreamWriter của bạn như thế này:

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

Thêm vào đó, có lẽ bạn nên chỉ định một tên người dùng với lệnh USER trước khi gia nhập một kênh, mặc dù tôi không chắc chắn nếu nó hoàn toàn cần thiết:

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

Sau này có thể được kiểm tra trong RFC hoặc nếu bạn đang kết nối với một daemon IRC cụ thể, tài liệu của nó cũng có thể được tham chiếu. – JonathanK

Các vấn đề liên quan