IRC 机器人无法连接“您尚未注册”
本文关键字:注册 您尚未注册 机器人 连接 IRC | 更新日期: 2023-09-27 18:37:21
有人知道它为什么要这样做吗?我听说这是因为 NICK 需要时间来注册,但我的意思是 10 秒肯定足够了?顺便说一下,我对服务器的 ping 大约 30 毫秒。在收到"您尚未注册"的垃圾邮件之前,我也会收到一个ping。
using System.IO;
using System.Net.Sockets;
using System.Diagnostics;
using System.Threading;
namespace no2
{
class Program
{
static void Main(string[] args)
{
TcpClient Client = new TcpClient("myip", myport);
NetworkStream NwStream = Client.GetStream();
StreamReader Reader = new StreamReader(NwStream);
StreamWriter Writer = new StreamWriter(NwStream);
string Data = "";
Writer.WriteLine("USER bigkog irc NSA bigkog");
Writer.Flush();
Writer.WriteLine("NICK iamabot");
Writer.Flush();
Thread.Sleep(10000);
Writer.WriteLine("JOIN #root");
while ((Data = Reader.ReadLine()) != null)
{
System.Console.WriteLine(Data);
if (Data.Contains(".SayHi!"))
{
Writer.WriteLine("PRIVMSG #root :Hello, Everyone!");
Writer.Flush();
}
else
{
Writer.WriteLine("PRIVMSG #root :Wuzzat?");
Writer.Flush();
}
}
}
}
}
你不应该需要 Thread.Sleep() 调用 - 事实上这可能是你问题的一部分。
您还需要侦听从服务器发送的 PING 消息,否则您的连接将超时。有时作为连接注册的一部分,服务器可能会向客户端发送 PING(我不记得我在哪个网络上看到过这个,但我以前见过),并期望在完成连接注册之前返回 PONG。
一旦您发送昵称/用户组合,我就会想立即倾听,并适当地响应服务器发送给您的任何内容,无论是 PING 还是 001(欢迎)消息。收到 001 消息后,您的连接即告注册,您可以发送 JOIN 消息。
看看 IRC 规范(RFC1459或RFC2812),但请记住不是每个人都能正确实现它,所以给它一些回旋余地。