I finaly found solution
all is on the run()
quint16 senderPort;
qDebug("Could not bind udp command_server socket...");
m_thread_go = false;
}
else
m_thread_go = true;
while (m_thread_go) {
if (m_socket.waitForReadyRead(100)) {
if (m_socket.hasPendingDatagrams()) {
datagram.resize(m_socket.pendingDatagramSize());
m_socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
in_qstr = datagram.data();
resp = ProcessCommand(in_qstr.toLower());
datagram.clear();
datagram.append(resp);
if (m_socket.writeDatagram(datagram, sender, senderPort) == -1) {
qDebug("dropped at write");
m_socket.close();
return;
}
if (resp == "_exit_") {
m_socket.close();
m_thread_go = false;
emit exitCommand();
}
m_socket.flush();
}
}
}
m_socket.close();
}
QTextStream out( stdout );
QUdpSocket m_socket;
QByteArray datagram;
QHostAddress sender;
quint16 senderPort;
QString in_qstr;
QString resp;
if (m_socket.bind(QHostAddress::Any, 55667) == -1) {
qDebug("Could not bind udp command_server socket...");
m_thread_go = false;
}
else
m_thread_go = true;
while (m_thread_go) {
if (m_socket.waitForReadyRead(100)) {
if (m_socket.hasPendingDatagrams()) {
datagram.resize(m_socket.pendingDatagramSize());
m_socket.readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
in_qstr = datagram.data();
resp = ProcessCommand(in_qstr.toLower());
datagram.clear();
datagram.append(resp);
if (m_socket.writeDatagram(datagram, sender, senderPort) == -1) {
qDebug("dropped at write");
m_socket.close();
return;
}
if (resp == "_exit_") {
m_socket.close();
m_thread_go = false;
emit exitCommand();
}
m_socket.flush();
}
}
}
m_socket.close();
}
To copy to clipboard, switch view to plain text mode
Bookmarks