bool Server::SendData(QHostAddress ip_to, QString message) { bool result = false; QTcpSocket* tcpSocket = sockets->value(ip_to.toIPv4Address(), 0); if (tcpSocket && tcpSocket->state()==QAbstractSocket::ConnectedState && tcpSocket->isWritable()) { emit write_message(tr("Sending data (size=%1) to %2. Content: \"%3\"").arg(message.length()).arg(ip_to.toString()).arg(message)); tcpSocket->write(message.toUtf8()); result = tcpSocket->waitForBytesWritten(); } else { tcpSocket = new QTcpSocket(); tcpSocket->connectToHost(ip_to, remote_port, QIODevice::ReadWrite); tcpSocket->waitForConnected(5000); if (tcpSocket->state()==QAbstractSocket::ConnectedState) { emit write_message(tr("Sending data (size=%1) from new socket to %2. Content: \"%3\"").arg(message.length()).arg(ip_to.toString()).arg(message)); tcpSocket->write(message.toUtf8()); result = tcpSocket->waitForBytesWritten(5000); } else { emit error(tr("Client \"%1\" not found").arg(ip_to.toString())); } tcpSocket->abort(); delete tcpSocket; } return result; }
bool Server::SendData(QString message) { bool result = false; QTcpSocket* tcpSocket = getRemoteSocket(); if (tcpSocket && tcpSocket->state()==QAbstractSocket::ConnectedState && tcpSocket->isWritable()) { emit write_message(tr("Sending data (size=%1) to server. Content: \"%2\"").arg(message.length()).arg(message)); tcpSocket->write(message.toLocal8Bit()); result = tcpSocket->waitForBytesWritten(); if (!result) { emit error(tr("Sending error: %1").arg(tcpSocket->errorString())); } else { tcpSocket->flush(); } } return result; }