IRC Bot无法识别服务器 - 连接挂起

时间:2011-04-03 21:40:49

标签: c# irc

当我尝试使用C#中的简单IRC bot连接到freenode时,我收到以下消息:

  

:asimov.freenode.net注意*: * 查找您的主机名......

     

:asimov.freenode.net注意*: * 检查身份

     

:asimov.freenode.net注意*: * 无法查找您的主机名

     

:asimov.freenode.net通知*: * 没有识别回复

然后大约30秒后,程序终止。

我尝试在NICK消息之前发送USER消息,并且还尝试手动将回车符“\ r \ n”附加到行的末尾,而不是在StreamWriter选项中指定它。关于可能导致这种行为的其他事情的任何想法?

这是我目前的代码:

        socket = new TcpClient(host, port);
        socket.ReceiveBufferSize = 1024;
        Console.WriteLine("Connected");
        NetworkStream stream = socket.GetStream();
        reader = new StreamReader(stream);
        writer = new StreamWriter(stream) { NewLine = "\r\n", AutoFlush = true };
        writer.Write("NICK " + user);
        writer.Write("USER " + user + " 8 * :" + user);
        writer.Write("JOIN " + chan);
        //System.Threading.Thread.Sleep(5000);

        while(running)
        {
            line = reader.ReadLine();
            Console.WriteLine(line);
        }

* *已修复 - 使用.WriteLine修复它。谢谢!

1 个答案:

答案 0 :(得分:3)

你没有冲洗缓冲区。使用writer.Flush();每次写完后。

示例:

writer.Write("NICK {0}\r\n", user);
writer.Flush();

或者

writer.WriteLine("NICK {0}", user);
writer.Flush(); // Maybe here you will not need to flush because of the autoflush