C# IRC Bot无法识别服务器-连接挂起
当我尝试使用C#中的简单IRC bot连接到freenode时,我收到以下消息: :asimov.freenode.net注意*:*正在查找主机名 :asimov.freenode.net通知*:*正在检查标识 :asimov.freenode.net注意*:*无法查找您的主机名 :asimov.freenode.net通知*:*无识别响应 然后大约30秒后,程序终止 我已尝试在NICK消息之前发送用户消息,并尝试手动将回车符“\r\n”附加到行尾,而不是在StreamWriter选项中指定它。关于其他可能导致这种行为的因素有什么想法吗 这是我目前的代码:C# IRC Bot无法识别服务器-连接挂起,c#,irc,C#,Irc,当我尝试使用C#中的简单IRC bot连接到freenode时,我收到以下消息: :asimov.freenode.net注意*:*正在查找主机名 :asimov.freenode.net通知*:*正在检查标识 :asimov.freenode.net注意*:*无法查找您的主机名 :asimov.freenode.net通知*:*无识别响应 然后大约30秒后,程序终止 我已尝试在NICK消息之前发送用户消息,并尝试手动将回车符“\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();
或
如果你用Wireshark或类似的软件包嗅探到了这一点,你是否看到你的数据实际被发送了?我怀疑它位于某个缓冲区中。我认为您应该使用.WriteLine,而不是。如果希望streamwriter将\r\n附加到每一行并刷新它,请写入。尝试使用
writer.WriteLine
以确保换行符附加在末尾。编辑:忍者被@Ravadre:)@Harpyon:Yey,我变成了1分钟的忍者:-),你需要对ping做出反应。否则你很快就会被踢。我不记得在注册前是否会发生PING。
writer.WriteLine("NICK {0}", user);
writer.Flush(); // Maybe here you will not need to flush because of the autoflush