当我尝试使用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