Using UDP multi client with single server how to do?
-
wrote on 24 Aug 2018, 08:32 last edited by
if client 1 : sends "Test1" to server and reply back to client "Reply1".
if client 2 : sends "Test2" to server and reply back to client "Reply2".
if any one know please help me. i have done using TCP but not with UDP.
-
wrote on 24 Aug 2018, 08:56 last edited by
QTcpSocket and QUdpSocket are both
QIODevice
s so you can read/write them in the exact same way -
if client 1 : sends "Test1" to server and reply back to client "Reply1".
if client 2 : sends "Test2" to server and reply back to client "Reply2".
if any one know please help me. i have done using TCP but not with UDP.
-
wrote on 25 Aug 2018, 04:10 last edited by VRonin
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle("Server App"); serudpSocket = new QUdpSocket(); serudpSocket->bind(QHostAddress::Any, 6000); connect(serudpSocket, SIGNAL(readyRead()), this, SLOT(readingmsg())); connect(serudpSocket, SIGNAL(disconnected()), this, SLOT(deleteLater())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::readingmsg() { // reading from client QByteArray buffer; buffer.resize(serudpSocket->pendingDatagramSize()); QHostAddress sender; quint16 port; qDebug()<<"port in reading:"<<port; serudpSocket->readDatagram(buffer.data(),buffer.size(),&sender,&port); ui->textEdit->setText(buffer); // Writing to the client,need to specify the client port number. // static int i; QByteArray clientData; QString str = "reply"; // QString index = QString::number(i); clientData.append(str); serudpSocket->writeDatagram(clientData, QHostAddress::LocalHost, port ); // for debugging qDebug()<<"Datagram Recieved From client: "<< buffer.data(); qDebug()<<"Client IP" << sender.toString(); qDebug()<<"port in sending:"<< port; qDebug()<<"Datagram sending to client:"<< clientData.data(); qDebug()<<"\n"; // i++; }
this is my code help me to get desired output?
multi client single server
when client1 sends "test1" it has to send back "reply1"
when client1 sends "test2" it has to send back "reply2" like that ? -
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle("Server App"); serudpSocket = new QUdpSocket(); serudpSocket->bind(QHostAddress::Any, 6000); connect(serudpSocket, SIGNAL(readyRead()), this, SLOT(readingmsg())); connect(serudpSocket, SIGNAL(disconnected()), this, SLOT(deleteLater())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::readingmsg() { // reading from client QByteArray buffer; buffer.resize(serudpSocket->pendingDatagramSize()); QHostAddress sender; quint16 port; qDebug()<<"port in reading:"<<port; serudpSocket->readDatagram(buffer.data(),buffer.size(),&sender,&port); ui->textEdit->setText(buffer); // Writing to the client,need to specify the client port number. // static int i; QByteArray clientData; QString str = "reply"; // QString index = QString::number(i); clientData.append(str); serudpSocket->writeDatagram(clientData, QHostAddress::LocalHost, port ); // for debugging qDebug()<<"Datagram Recieved From client: "<< buffer.data(); qDebug()<<"Client IP" << sender.toString(); qDebug()<<"port in sending:"<< port; qDebug()<<"Datagram sending to client:"<< clientData.data(); qDebug()<<"\n"; // i++; }
this is my code help me to get desired output?
multi client single server
when client1 sends "test1" it has to send back "reply1"
when client1 sends "test2" it has to send back "reply2" like that ?wrote on 25 Aug 2018, 05:52 last edited by@bhargav said in Using UDP multi client with single server how to do?:
serudpSocket->writeDatagram(clientData, QHostAddress::LocalHost, port );
you are sending to
QHostAddress::LocalHost
instead ofsender
-
wrote on 25 Aug 2018, 06:32 last edited by
Here i am testing in single computer. so i thought local host means 127.0.0.1?
1/6