#include "socketirc.h" #include SocketIRC::SocketIRC() : server("irc.freenode.net"), port(6667), isConnected(false) { connect(&sock, SIGNAL(readyRead()), this, SLOT(readMsg())); connect(&sock, SIGNAL(disconnected()), this, SLOT(onDisconnect())); } void SocketIRC::setServer(std::string server_) { server = server_; } void SocketIRC::setPort(int port_) { port = port_; } void SocketIRC::sendMsg(QString msg) { msg.append("\r\n"); sock.write(msg.toStdString().c_str()); sock.flush(); } void SocketIRC::connectToServer(QCoreApplication* app_) { app = app_; sock.connectToHost(QString(server.c_str()), quint16(port)); if(!sock.waitForConnected(3000)) { std::cerr << "failed to connect : " << sock.errorString().toStdString() << std::endl; if(app != NULL) app->exit(); else exit(0); } app->exec(); } void SocketIRC::readMsg() { char buffer[512]; while(sock.canReadLine()) { int numbytes = sock.readLine(buffer, 512); buffer[numbytes - 2] = '\0'; std::cout << buffer << std::endl; emit receivedMsg(QString(buffer)); } } void SocketIRC::onDisconnect() { app->exit(); }