Se trata de un cliente UDP de echo. Consta de un una caja de texto para escribir el nombre del servidor, y una otra caja de texto para enviar texto en claro al servidor. Aquí dejo la implementación de la clase principal.
echoclient.h
echoclient.cpp
echoclient.h
#ifndef ECHOCLIENT_H #define ECHOCLIENT_H #include < QWidget> #include "IForm.h" namespace Ui { class EchoClient; } class EchoClient : public QWidget, public IForm { Q_OBJECT public: explicit EchoClient(QWidget *parent = 0); virtual ~EchoClient(); virtual void putTexts(); virtual void setuid(); public slots: void onClickSend(); private: Ui::EchoClient *ui; }; #endif // ECHOCLIENT_H
echoclient.cpp
#include "echoclient.h" #include "ui_echoclient.h" #include "qtudpclient.h" #include < QUdpSocket> #include < QHostAddress> #include < iostream> EchoClient::EchoClient(QWidget *parent) : QWidget(parent), ui(new Ui::EchoClient) { ui->setupUi(this); putTexts(); setuid(); } EchoClient::~EchoClient() { delete ui; qDebug("Delete EchoClient"); } void EchoClient::putTexts() { ui->lbServerName->setText(tr("Server Name")); ui->lbText->setText(tr("Text")); ui->leServerName->setText("localhost"); ui->pbSend->setText(tr("Send")); } void EchoClient::setuid() { setAttribute(Qt::WA_DeleteOnClose); connect(ui->pbSend, SIGNAL(clicked()),SLOT(onClickSend())); } void EchoClient::onClickSend() { qDebug("onClickSend"); QUdpSocket *udp =new QUdpSocket(this); const QHostAddress *host = new QHostAddress(ui->leServerName->text()); //const char *txt = (const char*) ui->leText->text().toLocal8Bit().data(); QByteArray ba = ui->leText->text().toLocal8Bit(); const char *txt = ba.data(); qint16 len = ui->leText->text().length(); qint16 port = 8888; udp->writeDatagram(txt, len, QHostAddress::LocalHost, port); qDebug(ui->leServerName->text().toStdString().c_str()); delete host; delete udp; }Y aquí podemos ver la información enviada al servidor:
sudo tcpdump -xX -i lo 0x0000: 4500 0028 0000 4000 4011 3cc3 7f00 0001 E..(..@.@.<..... 0x0010: 7f00 0001 c30e 22b8 0014 fe27 6865 6c6c ......"....'hell 0x0020: 6f20 7365 7276 6572 o.serverEn los próximos envíos veremos la interpretación de esta información y apliaremos el cliente para que sea capaz de recibir e interpretar las respuestas del servidor.
Veo que el código fuente no se ve demasiado bien, intentaré en los próximos días intentaré hacer algo para arreglarlo.
ResponderEliminar