当我尝试使用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修复它。谢谢!

最佳答案

您没有刷新缓冲区。使用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

07-25 20:55