Witam
Potrzebuje nawiązać komunikacje poprzez protokół UDP. Robię wszystko zgodnie z tutorialem, ale niestety nie dostaję żadnej odpowiedzi. Dodam, że w alternatywnym programie wszystko działa, więc to na pewno nie wina systemu, czy firewall. Działa również jeśli jako adres hosta użyję LocalAdres, więc dostaje to co wysyłam.
Dotarłem do tematu
http://stackoverflow.com/questions/13773374/qudpsocket-cannot-receive-datagram
W którym jest powiedziane, że może to wynikać z kolejności działania, czyli slot po sygnale readyRead(), jest połączony przed bindowaniem. Zastosowałem się do porady, jednak również nie dostaje odpowiedzi.
// konstruktor klasy
// add pewny adres
socket = new QUdpSocket(this);
socket->bind(add, 1200);
QObject::connect(socket , SIGNAL(readyRead()) , SLOT(SLOT_rr()));
metoda do wysyłania danych
void MW::cn()
{
QByteArray array;
array.append("gS");
socket->writeDatagram(array ,add, 1200);
qd"wyslane";
}
slot do odbiory danych po sygnale
void MW::SLOT_rr()
{
QByteArray array;
array.resize(socket->pendingDatagramSize());
QHostAddress adress;
quint16 port;
socket->readDatagram(array.data() , array.size() , &adress , &port);
QString str(array);
QMessageBox msgBox;
msgBox.setText(adress.toString()+str);
msgBox.exec();
qd "odbior" << array;
qd "adres" << adress.toString();
qd "port" << port;
}
no i main
MW *klasa = new MW();
klasa->cn();