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

मेरा आईआरसी बॉट क्यों कनेक्ट नहीं होता है?मेरा आईआरसी बॉट क्यों कनेक्ट नहीं होता है?

+0

क्या आपको लगता है कि यह कनेक्ट नहीं हो रहा है? क्या कोई त्रुटि है? –

+0

जांचें कि पोर्ट 6667 अवरुद्ध है या नहीं। मेरे मामले में, मैं प्रॉक्सी सर्वर के पीछे हूं जिसने 6667 को अवरुद्ध कर दिया है। इसलिए मैं 6667 पर आईआरसी से कनेक्ट नहीं हो सकता। –

+0

@ एमआर। तीव्र: क्या आपका बॉट वास्तव में कनेक्ट नहीं होता है? यानी: यदि आप '/ कौन परीक्षण कर रहे हैं' (मुझे लगता है कि यह सही आदेश है) क्या वह वहां नहीं है? यदि आप StreamReader से पढ़ते हैं तो क्या आपको सर्वर से कोई त्रुटि संदेश मिल रहा है? –

उत्तर

3

आईआरसी प्रोटोकॉल सीआर/एलएफ जोड़े चाहता है, जबकि स्ट्रीमवाइटर के लिए डिफ़ॉल्ट व्यवहार केवल लाइन फ़ीड्स है। हालांकि मुझे यकीन है कि नहीं कर रहा हूँ

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

साथ ही, आप शायद एक चैनल शामिल होने से पहले उपयोगकर्ता कमांड के साथ एक उपयोगकर्ता नाम निर्दिष्ट करना चाहिए, अगर यह पूरी तरह से आवश्यक है:: आप इस तरह अपने StreamWriter बनाना चाहिए

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

उत्तरार्द्ध आरएफसी में चेक किया जा सकता है या यदि आप किसी विशेष आईआरसी डिमन से कनेक्ट कर रहे हैं, तो इसके दस्तावेज को भी संदर्भित किया जा सकता है। – JonathanK

संबंधित मुद्दे