Mostrando entradas con la etiqueta c++. Mostrar todas las entradas
Mostrando entradas con la etiqueta c++. Mostrar todas las entradas

domingo, 24 de julio de 2011

Cliente simple echo. UDP. Añadida selección de puerto.

Se ha añadido al cliente echo udp, la selección de puerto, para ello se ha usado un QSlider y un QLCDNumber.

Conectamos el valor producido por el QSlider al valor mostrado en el QLCDNumber y configuramos los valore máximos y mínimos del QSlider a los valores de puerto máximo y mínimo respectivamente.

const quint16 EchoClient::PORT_MIN = 1;
const quint16 EchoClient::PORT_MAX = 65535;
const quint16 EchoClient::PORT_DEFAULT = 8888;

...

void EchoClient::setuid()
{
    setAttribute(Qt::WA_DeleteOnClose);
    connect(ui->pbSend, SIGNAL(clicked()),SLOT(onClickSend()));
    connect(ui->sldPort, SIGNAL(valueChanged(int)), ui->lcdPort, SLOT(display(int)));

    ui->sldPort->setMinimum(EchoClient::PORT_MIN);
    ui->sldPort->setMaximum(EchoClient::PORT_MAX);
    ui->sldPort->setValue(EchoClient::PORT_DEFAULT);
}

Por último en la función de enviar cogemos el valor del puerto del QLCDNumber y lo enviamos al host especificado en el QLineEdit.

void EchoClient::onClickSend()
{
    qDebug("onClickSend");

    QHostInfo info = QHostInfo::fromName(ui->leServerName->text());
    if (!info.addresses().isEmpty())
    {
        QHostAddress address = info.addresses().first();
        QByteArray ba = ui->leText->text().toLocal8Bit();
        const char *txt = ba.data();
        qint16 len = ui->leText->text().length();
        qint16 port = ui->sldPort->value();

        QUdpSocket *udp =new QUdpSocket(this);
        udp->writeDatagram(txt, len, address,  port);
        delete udp;
    } else
    {
        QMessageBox msgBox;
        msgBox.setWindowTitle(tr("Error"));
        msgBox.setText(tr("Error host not found"));
        msgBox.setIcon(QMessageBox::Critical);
        msgBox.setStandardButtons(QMessageBox::Ok);
        msgBox.exec();
    }
}

Para descargar esta versión:

svn checkout http://infobasic.googlecode.com/svn/tags/infobasic-0.0.2 infobasic-read-only