最近一直在努力創建IRC bot,雖然它似乎連接&與大多數IRC服務器一起工作,但似乎與Twitch IRC服務器(irc.twitch.tv)有關。連接到IRC服務器的問題
當連接到另一臺服務器時,收到的數據&沒有發出任何問題,但是使用twitch連接時,我無法發送或接收數據。
初始化:
Connection::Connection(char* server, int port, std::string nick, std::string pass)
{
fServer = server;
fPort = port;
fNick = nick;
fPass = pass;
fChanCount = 0;
clear_buffer();
fSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
cout << "Attempting to resolve host: " << fServer << endl;
fHost = resolve_host(fServer);
fSaddr.sin_addr.S_un.S_addr = fHost;
fSaddr.sin_port = htons(fPort);
fSaddr.sin_family = AF_INET;
cout << "Resolved to: " << fHost << endl;
}
打開連接:
int Connection::Connect()
{
if (connect(fSock, (sockaddr*)&fSaddr, sizeof(fSaddr)) == SOCKET_ERROR)
{
cout << "Can't connect to " << fServer << endl;
return 0;
}
recv(fSock, fBuffer, 1024 * 8, 0);
cout << fBuffer << endl << endl << flush;
send_message("PASS " + fPass);
send_message("NICK " + fNick);
send_message("USER " + fNick + " 0 * :" + fNick);
return 1;
}
清除緩衝區:
void Connection::clear_buffer()
{
memset(fBuffer, 0, sizeof(fBuffer));
}
接收:
string Connection::receive_message()
{
clear_buffer();
recv(fSock, fBuffer, 1024 * 8, 0);
return fBuffer;
}
如果需要,可能會造成這種情況,可能會提供更多細節。
'fPass'是否爲空? IIRC一些IRC服務器需要'PASS'來包含一些東西,即使服務器不需要密碼。在這種情況下,我已經輸入「none」作爲密碼。 – Galik 2015-04-05 14:12:49
我以與其他一切相同的方式通過密碼。 – user3815037 2015-04-05 15:22:23
您使用的是真實密碼還是OAuth令牌? – szatmary 2015-04-06 15:18:35