当我通过telnet连接到IRC服务器时,一切正常,但在我的程序中,在问候消息后没有来自服务器的响应。怎么了?WinSocket IRC USER命令
PS当我发送“JOIN #channel”服务器响应。
片段代码:
while (true)
{
ret = recv(pocket, buf, 512, 0);
if (ret == 0 || ret == SOCKET_ERROR)
{
printf("Serwer przerwal polaczenie");
break;
}
buf[ret] = '\0';
input = buf;
printf("%s\n", input.c_str());
if (fTime)
{
isend(pocket, "USER foox 0 0 :foox");
isend(pocket, "NICK foobar");
fTime = false;
}
memset(buf, 0, sizeof(buf));
}
isend功能:
bool isend(SOCKET socket,std::string message)
{
int ret = send(socket, message.c_str(), message.size() + 1, 0);
if (!ret){
printf("Nie udalo sie wyslac pakietu: \"%s\"", message);
return false;
}
else
return true;
}
你为什么要发送.size()+ 1?对于USER和NICK,它看起来并不像在每行之后发送\ r \ n。 – Boofhead
我之前纠正过它,但它仍然不起作用 – user3434747
看起来您的编辑仍然发送发送size()+ 1的错误。你再次没有添加\ r \ n到每个。根据RFC,每行应该被正确终止。 – Boofhead