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