【发布时间】:2011-04-03 21:40:49
【问题描述】:
当我尝试使用 C# 中的简单 IRC 机器人连接到 freenode 时,我收到以下消息:
:asimov.freenode.net NOTICE * :* 正在查找您的主机名...
:asimov.freenode.net NOTICE * :* 检查身份
:asimov.freenode.net 注意 * :* 无法查找您的主机名
:asimov.freenode.net NOTICE * :* 没有 Ident 响应
然后在大约 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 修复它。谢谢!
【问题讨论】:
-
如果您使用 Wireshark 或类似工具进行数据包嗅探,您是否看到实际发送的数据?我怀疑它在某处的缓冲区中。
-
我认为你应该使用 .WriteLine 而不是 .Write 如果你希望 streamwriter 将 \r\n 附加到每一行并刷新它。
-
尝试使用
writer.WriteLine确保在末尾附加换行符。编辑:@Ravadre 的 Ninja'd :) -
@Harpyon:是的,我变成了 1 分钟忍者 :-)
-
您需要响应 PING。否则你会很快被踢。我不记得在注册之前是否会发生 PING。