gpt4 book ai didi

c++ - IRC 客户端 - 加入时没有回复

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:00 29 4
gpt4 key购买 nike

我正在用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com