#include "stdafx.h" #pragma comment(lib, "ws2_32.lib") void Botinfo(std::string *botinfo) { char temp[30]; std::cout<< "Nick: "; std::cin.getline(temp, 30, '\n'); botinfo[0] = temp; std::cout<< "Name: "; std::cin.getline(temp, 30, '\n'); botinfo[1] = temp; std::cout<< "Server: "; std::cin.getline(temp, 30, '\n'); botinfo[2] = temp; std::cout<< "Channel: "; std::cin.getline(temp, 30, '\n'); botinfo[3] = temp; } unsigned int connecttoserver(std::string server, int port) { SOCKET sock; char serverip[20]; sockaddr_in addr; WSADATA wsaData; if(WSAStartup(MAKEWORD(2,0), &wsaData) != 0) std::cout<<"WSA could not be initialized."; hostent *dns = gethostbyname(server.c_str()); sprintf(serverip, "%u.%u.%u.%u", (unsigned char) dns->h_addr_list[0][0], (unsigned char) dns->h_addr_list[0][1], (unsigned char) dns->h_addr_list[0][2], (unsigned char) dns->h_addr_list[0][3]); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(serverip); sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == 0) std::cout<<"Socket could not be initialized"; if(connect(sock, (sockaddr *) &addr, sizeof(addr)) == -1) std::cout<<"Connection could not be made"; char temp[10000]; int x = recv(sock, temp, 10000, 0); temp[x] = 0; std::cout<< temp; return sock; } void announcetoserver(SOCKET sock, std::string *botinfo) { std::string nick = "NICK "; std::string user = "USER "; nick += botinfo[0]; nick += "\r\n"; user += botinfo[0]; user += ' '; user += "localhost "; user += botinfo[2]; user += ' '; user += botinfo[1]; user += "\r\n"; send(sock, nick.c_str(), nick.length(), 0); send(sock, user.c_str(), user.length(), 0); char temp[10000]; int x = recv(sock, temp, 10000, 0); temp[x] = 0; std::cout<< temp; } void inareagoing(SOCKET sock, std::string *botinfo) { std::string join = "JOIN "; join += botinfo[3]; join += "\r\n"; send(sock, join.c_str(), join.length(), 0); char temp[10000]; int x = recv(sock, temp, 10000, 0); temp[x] = 0; std::cout<< temp; } void messagereceive(void *sock) { char goatsecks[1000]; int x = 0; while(1) { x = recv((SOCKET)sock, goatsecks, 1000, 0); if(x > 0) { goatsecks[x] = 0; std::cout<< goatsecks << std::endl; } Sleep(10); } } void outofnames(SOCKET sock) { char temp[1000]; std::string goatsecks2; while(1) { std::cin.getline(temp, 100, '\n'); goatsecks2 = temp; goatsecks2 += "\r\n"; send(sock, goatsecks2.c_str(), goatsecks2.length(), 0); } } int main() { SOCKET sock; std::string botinfo[4]; Botinfo(botinfo); sock = connecttoserver(botinfo[2], 6667); announcetoserver(sock, botinfo); inareagoing(sock, botinfo); _beginthread(messagereceive, 0, (void *)sock); outofnames(sock); std::cin.get(); WSACleanup(); return 0; }