JOIN没有回复

我正在用C ++写一个IRC客户端(在SFML库的帮助下),但它表现得很奇怪。 我发送NICK和USER命令,我可以连接到服务器,但JOIN命令有很多奇怪的事情发生,我必须写出“神奇地工作的随机代码”来解决。 我很确定这些命令也遵循IRC RFC。

我知道套接字正在发送它们应该发送的内容,并且我已经使用Wireshark进行了验证,所以我在这里发布的是数据包的消息。 在以下示例中,套接字已连接到IRC服务器(在本例中为irc.freenode.net)

这工作:

char mess[] ="NICK lmno nrUSER lmno 0 * :lmnonrJOIN #mytestnr";
Socket.Send(mess, sizeof(mess));

这不:

char msg[] = "NICK lmno rnUSER lmno 0 * :lmno rn";
char msga[] = "JOIN #mytest rn";
Socket.Send(msg, sizeof(msg));
Socket.Send(msga, sizeof(msga));

但奇怪的是这个作品:

char msg[] = "NICK lmno rnUSER lmno 0 * :lmno rn";
char msga[] = "JOIN #mytest rn";
Socket.Send(msg, sizeof(msg));
Socket.Send(msga, sizeof(msga));
Socket.Send(msga, sizeof(msga));

我确实在这个话题上做了一些研究,似乎没有人遇到同样的问题。 陌生人是,当我在telnet中尝试这个,我只需要发送JOIN一次。 有人能给我一些建议吗?

谢谢,SFI


它可能与C字符串末尾的终止' 0'字符有关。 尝试

Socket.Send(msg, sizeof(msg) - 1);
Socket.Send(msga, sizeof(msga) - 1);
链接地址: http://www.djcxy.com/p/53457.html

上一篇: No reply on JOIN

下一篇: Java socket output has delayed first message