62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
#include "socketirc.h"
|
|
#include <iostream>
|
|
|
|
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));
|
|
}
|
|
}
|