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