【发布时间】:2016-04-01 07:24:36
【问题描述】:
所以,我一直在尝试制作一个连接到本地 irc 服务器的机器人。问题是,如果我调用使用构造函数创建的“Irc.cs”类,例如:Irc irc = new Irc("192.168.1.2", 6667); irc.joinChannel("#test"),它不会出现在 irc 服务器频道上。问题是我认为它没有连接失败,因为如果我输入Irc irc = new Irc("192.168.1.11", 6667)(它不是服务器)它会引发异常,但服务器不会。如果有人可以提供帮助,我会很高兴:) 这是“Irc.cs”的代码
public IrcBot(String ip, int port, String nickName)
{
tcpClient = new TcpClient(ip, port);
inputStream = new StreamReader(tcpClient.GetStream());
outputStream = new StreamWriter(tcpClient.GetStream());
outputStream.WriteLine("NICK " + nickName);
outputStream.WriteLine("USER " + nickName + " 8 * : " + nickName);
outputStream.Flush();
}
public void joinRoom(String channel)
{
this.channel = channel;
outputStream.WriteLine("JOIN " + channel);
outputStream.Flush();
}
【问题讨论】:
-
PS:端口 6667 已打开。我可以使用 mIRC 连接到我的普通电脑上的 irc 服务器(托管在 VM 上)
-
只是一个疯狂的猜测,但也许你发送加入命令太早了。我知道连接到 IRC 服务器需要一些时间。现在你不需要等待任何回应。除此之外,我建议关闭和处理流(例如使用 using)
-
@RonDeijkers 好的,我将如何检查我是否收到回复
-
通过读取输入流。我不知道 IRC 协议,所以我不知道会返回哪些命令。彻底阅读 IRC 协议可以回答这个问题,您还可以将 WireShark 与诸如 mIRC 之类的 IRC 客户端结合使用来检查通信是如何工作的。不过,我也确实认为所有 IRC 服务器很可能都会检查机器人。
-
@RonDeijkers 我自己的服务器会自行阻止机器人吗?
标签: c# visual-studio tcpclient bots irc