Написал два класса (по сути одинаковых, за исключением что класс UDPClient, имеет строку client->bind(2424);
). Как реализовать обмен сообщениями между сервером и клиентом? Сообщения от сервера до клиента отправляет, а вот наооборот - нет.
Реализация класса UDPServer:
#include "udpserver.h"
UDPServer::UDPServer(QWidget *parent) : QDialog(parent)
{
server = new QUdpSocket(this);
connect(server, SIGNAL(readyRead()), this, SLOT(ProcessData()));
text = new QTextEdit;
text->setReadOnly(true);
line = new QLineEdit;
QPushButton *btn = new QPushButton("Send");
connect(btn, SIGNAL(clicked(bool)), this, SLOT(SendDatagram()));
QVBoxLayout *lay = new QVBoxLayout;
lay->addWidget(text);
lay->addWidget(line);
lay->addWidget(btn);
this->setLayout(lay);
this->setWindowTitle("Server");
}
UDPServer::~UDPServer()
{
}
void UDPServer::SendDatagram()
{
QByteArray datagram;
QDataStream out(&datagram, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_7);
text->append("Sent: " + line->text());
out << line->text();
server->writeDatagram(datagram, QHostAddress::LocalHost, 2424);
line->clear();
}
void UDPServer::ProcessData()
{
QByteArray datagram;
do
{
datagram.resize(server->pendingDatagramSize());
server->readDatagram(datagram.data(), datagram.size());
} while(server->hasPendingDatagrams());
QString message;
QDataStream in(&datagram, QIODevice::ReadOnly);
in.setVersion(QDataStream::Qt_5_7);
in >> message;
text->append("Received: " + message);
}
Реализация класса UDPClient:
#include "udpclient.h"
UDPClient::UDPClient(QWidget *parent) : QDialog(parent)
{
client = new QUdpSocket(this);
client->bind(2424);
connect(client, SIGNAL(readyRead()), this, SLOT(ProcessData()));
text = new QTextEdit;
text->setReadOnly(true);
line = new QLineEdit;
QPushButton *btn = new QPushButton("Send");
connect(btn, SIGNAL(clicked(bool)), this, SLOT(SendDatagram()));
QVBoxLayout *lay = new QVBoxLayout;
lay->addWidget(text);
lay->addWidget(line);
lay->addWidget(btn);
this->setLayout(lay);
this->setWindowTitle("Client");
}
UDPClient::~UDPClient()
{
}
void UDPClient::ProcessData()
{
QByteArray datagram;
do
{
datagram.resize(client->pendingDatagramSize());
client->readDatagram(datagram.data(), datagram.size());
} while(client->hasPendingDatagrams());
QString message;
QDataStream in(&datagram, QIODevice::ReadOnly);
in.setVersion(QDataStream::Qt_5_7);
in >> message;
text->append("Received: " + message);
}
void UDPClient::SendDatagram()
{
QByteArray datagram;
QDataStream out(&datagram, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_7);
text->append("Sent: " + line->text());
out << line->text();
client->writeDatagram(datagram, QHostAddress::LocalHost, 2424);
line->clear();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пользователь вводит дату в формате 01/02/17, нужно сохранить дату в трёх переменных int соответственно-day,month,yearЯ разбивал строку с датой на 3 подстроки...
Вопрос заключается в необходимости оператора newОн предназначается для динамического выделения памяти, то есть во время выполнения программы,...
Работаю над распознаванием фигур в OpenCVЧтобы найти четырехугольник, смотрю на количество вершин: