- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在用 C++(在 SFML 库的帮助下)编写一个 IRC 客户端,但它的行为很奇怪。我发送了 NICK 和 USER 命令,我可以连接到服务器,但是 JOIN 命令发生了许多奇怪的事情,我必须编写“神奇工作的随机代码”来解决。我很确定这些命令也遵循 IRC RFC。
我知道套接字正在发送它们应该发送的内容,并且我已经使用 Wireshark 对其进行了验证,所以我在这里发布的是数据包的消息。在以下示例中,套接字已经连接到 IRC 服务器(在本例中为 irc.freenode.net)
这个有效:
char mess[] ="NICK lmno \n\rUSER lmno 0 * :lmno\n\rJOIN #mytest\n\r";
Socket.Send(mess, sizeof(mess));
这不是:
char msg[] = "NICK lmno \r\nUSER lmno 0 * :lmno \r\n";
char msga[] = "JOIN #mytest \r\n";
Socket.Send(msg, sizeof(msg));
Socket.Send(msga, sizeof(msga));
但奇怪的是这有效:
char msg[] = "NICK lmno \r\nUSER lmno 0 * :lmno \r\n";
char msga[] = "JOIN #mytest \r\n";
Socket.Send(msg, sizeof(msg));
Socket.Send(msga, sizeof(msga));
Socket.Send(msga, sizeof(msga));
我确实对这个主题做了一些研究,似乎没有人遇到同样的问题。奇怪的是,当我在 telnet 中尝试这个时,我只需要发送一次 JOIN。谁能给我一些建议?
谢谢,科学研究院
最佳答案
它可能与 C 字符串末尾的终止字符“\0”有关。尝试
Socket.Send(msg, sizeof(msg) - 1);
Socket.Send(msga, sizeof(msga) - 1);
关于c++ - IRC 客户端 - 加入时没有回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623230/
基于浏览器的 irc 客户端是否可以在不使用任何网关的情况下工作,即直接与 irc 服务器通信? 最佳答案 HTML5 WebSocket 无法连接到非 WebSocket 服务器。使用 WebSoc
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
在我的 IRC Bot 中,有一些命令我希望只能由我使用,并且我想检查以确保使用我的名字的任何人都被识别为 nickserv (idented)。但是,我无法找到一种简单的方法来确定这一点,这就是我在
我想在我的网站上实现聊天服务,想知道如何从头开始创建一个简单的基于浏览器的 IRC 客户端? 我有一个 linux box,可以在上面安装任何我想要的东西。 Google 找到了关于如何设置 IRC
我希望能够在不加入 IRC channel 的情况下从 IRC channel 获取用户列表及其详细信息,从而增加其用户数量。 所以不要发出 JOIN #chan然后 NAMES #chan要获取用户
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我正在尝试编写我自己的 IRC 服务器。我引用的是 IRC RFC,但它让我有点困惑。如果我严格遵守 RFC,我认为任何流行的客户端都不会与我的服务器一起工作,比如 mIRC。例如,RFC 规定服务器
我正在使用标准库中的 TcpStream 开发一个 IRC 机器人。 我能够阅读输入的所有行,但 IRC 服务器似乎没有响应我的身份请求。我以为我发送请求的时间太早了,所以我尝试在发送 IDENT 之
我想连接到 ExIrc 中的两台服务器使用 Elixir ,我找不到一个简单的解决方案。我对 elixir 还很陌生,我能做的就是使用“伞”来运行两个应用程序并使它们相互连接? (我想用一个应用程序连
这个数字不是 RFC 1459 的一部分,但我希望能够使用它以便在 IRC 机器人中正确堆叠和取消堆叠模式。有没有不发送这个的主流 IRC 服务器? 最佳答案 这是规范的可选建议,这意味着编写客户端的
我对此进行了广泛的搜索,只找到了特定于机器人的客户端。我知道它们基本相同,但是对于我想做的事情,我就是想不通。 我正在尝试编写一个 python 客户端,它表面上是纯粹而简单的。例如,当从命令行运行时
我正在使用 net.Socket 模块连接到 EFNET 并测试我的代码,以便向我的机器人添加重新连接事件。 我可以通过哪些方式来模拟机器人断开连接?问题是 2-3 周后就会断开连接 - 我添加了事件
require "socket" server = "irc.rizon.net" port = "6667" nick = "Ruby IRC Bot" channel = "#0x40" s =
我正在尝试编写一个函数,使用 Twisted Python 将 IRC channel 中的昵称列表打印到该 channel 。我该怎么做呢?我已经阅读了 API 文档,并且在该站点上只看到一个与我的
我有一个命令,我想将其限制在某些级别。我正在使用 unreal3.2.6 IRC。 我读到这个: 但我仍然不确定我可以做些什么来检查用户排名。 我想看看用户是否是“语音”或更高级别。什么可以查找用户,
我正在计划建立一个 IRC 网络并一直在探索各种选择。我打算使用Inspircd IRC Server 。以及运行 meteor 的网络服务器。是否可以使用 websockets 构建一个 Web I
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
如何获得 Weechat 配置变量?例如,我可以设置配置: /set irc.servers.freenode.ssl on 如何检索我设置的值? 最佳答案 要检查配置变量的值,您可以这样做: /se
有没有办法告诉irssi我要自动加入当前打开的所有 channel ? 我想要类似的东西: /channel add -auto /save 最佳答案 我找到了答案here: /alias adda
我整天都在搜寻Google,并且正在寻找一种方法来编写具有不同颜色的文本,就像我在其他IRC channel 上经常看到的那样。我想通过基于CLI的irssi实现此目的。我发现了多种无法正常工作的方法
我是一名优秀的程序员,十分优秀!