#include "socketirc.h" #include SocketIRC::SocketIRC() : server("irc.freenode.net"), port(6667), isConnected(false) { connect(&sock, SIGNAL(readyRead()), this, SLOT(readMsg())); } void SocketIRC::setServer(std::string server_) { server = server_; } void SocketIRC::setPort(int port_) { port = port_; } void SocketIRC::sendMsg(QString msg) { if(isConnected) { sock.write(msg.toStdString().c_str()); sock.flush(); std::cout << msg.toStdString(); } } void SocketIRC::setConnected(int c) { if(c != isConnected) { if(isConnected) { sock.close(); isConnected = false; emit stateChanged(isConnected); } else { sock.connectToHost(QString(server.c_str()), quint16(port)); if(sock.waitForConnected(5000)) isConnected = true; else std::cerr << "failed to connect : " << sock.errorString().toStdString() << std::endl; emit stateChanged(isConnected); } } } 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)); } }