Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <SDL.h>
- #include <SDL_net.h>
- #include <string.h>
- #include <sstream>
- #include <cstring>
- #include <cstdlib>
- #include <Windows.h>
- #include <conio.h>
- using namespace std;
- const int BUFF_SIZE = 516;
- bool killbot = true;
- int main(int argc, char** argv)
- {
- SDL_Init(SDL_INIT_EVERYTHING);
- SDLNet_Init();
- IPaddress ip;
- string server = "irc.afternet.org";
- char buffer[BUFF_SIZE];
- //create socket set
- SDLNet_SocketSet socketset = SDLNet_AllocSocketSet(1);
- SDLNet_ResolveHost(&ip, server.c_str(), 6667);
- Uint8 * dotQuad = (Uint8*)&ip.host;
- cout << "Successfully resolved host to IP: " << (unsigned short)dotQuad[0] << "." << (unsigned short)dotQuad[1] << "." << (unsigned short)dotQuad[2] << "." << (unsigned short)dotQuad[3];
- cout << " port " << SDLNet_Read16(&ip.port) << endl << endl;
- TCPsocket client = SDLNet_TCP_Open(&ip);
- SDLNet_TCP_AddSocket(socketset, client);
- //wait 10 seconds for server response
- int activesockets = SDLNet_CheckSockets(socketset, 10000);
- int gotresponse = SDLNet_SocketReady(client);
- int messagenum = 0;
- while (messagenum < 2)
- {
- if (gotresponse != 0)
- {
- int serverbytecount = SDLNet_TCP_Recv(client, buffer, BUFF_SIZE);
- string received = buffer;
- if (received.length() > serverbytecount)
- received.erase(serverbytecount);
- if (received.find("PING") != string::npos)
- {
- received.replace(1, 1, "O");
- strcpy_s(buffer, received.c_str());
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- cout << "sent: " << received.c_str() << endl;
- }
- cout << received.c_str() << endl;
- //killbot = false
- messagenum++;
- }
- }
- killbot = false;
- for (int i = 0; i < 3; i++)
- {
- if (i == 0)
- {
- strcpy_s(buffer, "NICK Bot_Test\r\n");
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- }
- if (i == 1)
- {
- strcpy_s(buffer, "USER Bot_Test 0 * :MyBot\r\n");
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- }
- if (i == 2)
- {
- strcpy_s(buffer, "JOIN :#ludumdare\r\n");
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- }
- int activesockets = SDLNet_CheckSockets(socketset, 5000);
- int gotresponse = SDLNet_SocketReady(client);
- if (gotresponse != 0)
- {
- strcpy_s(buffer, "");
- int serverbytecount = SDLNet_TCP_Recv(client, buffer, BUFF_SIZE);
- string received = buffer;
- if (received.length() > serverbytecount)
- received.erase(serverbytecount);
- cout << received.c_str() << endl;
- if (received.find("PING") != string::npos)
- {
- received.replace(1, 1, "O");
- strcpy_s(buffer, received.c_str());
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- cout << "sent: " << received.c_str() << endl;
- }
- }
- }
- /*strcpy_s(buffer, "PRIVMSG #ludumdare :hello world\r\n");
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- cout << "sent: " << buffer << endl;
- */
- cout << "end loop" << endl;
- int timer = 0;
- while (!killbot)
- {
- int socketactive = SDLNet_CheckSockets(socketset, 0);
- if (socketactive != 0)
- {
- //see if we got response from server
- int response = SDLNet_SocketReady(client);
- if (response != 0)
- {
- strcpy_s(buffer, "");
- int responsebytes = SDLNet_TCP_Recv(client, buffer, BUFF_SIZE);
- string received = buffer;
- if (received.length() > responsebytes)
- {
- received.erase(responsebytes);
- }
- cout << received.c_str() << endl;
- if (received.find("PING") != string::npos)
- {
- received.replace(1, 1, "O");
- strcpy_s(buffer, received.c_str());
- SDLNet_TCP_Send(client, (void*)buffer, strlen(buffer) + 1);
- cout << "sent: " << received.c_str() << endl;
- }
- if (responsebytes <= 0)
- {
- cout << "Sir, the server has been hit! We're going down!" << endl;
- cout << "Press ENTER to continue..." << endl;
- cin.get();
- killbot = true;
- }
- }
- }
- timer++;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement