Qt QUdpSocket
lima-city → Forum → Programmiersprachen → C/C++ und D
absender
angeben
ansatz
bestimmten port
brauche
code
datum
empfangen
filtern
gleichen fehler
hilfe
http
jemand
kompetente antwort
nachricht
paket
rechner
sender
signal
zeile
-
Hallo,
für ein kleines Qt-Programm brauche ich mal eure Hilfe:
Ich möchte Udp-Packete von einer bestimmten IP-Adresse und einem bestimmten Port empfangen. Mein Ansatz war:
... udpSocket = new QUdpSocket(0); bool suc = udpSocket->bind(QHostAddress("192.168.101.004"),8060); connect(udpSocket, SIGNAL(readyRead()),this,SLOT(processPendingDatagrams())); ... void processPendingDatagrams() { while(udpSocket->hasPendingDatagrams()) QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(),datagram.size()); ... }
Dies funktioniert nicht, da bind false zurückliefert. Was funktioniert, ist, wenn ich die Zeile
bool suc = udpSocket->bind(QHostAddress("192.168.101.004"),8060);
durch
bool suc = udpSocket->bind(QHostAddress::Any,8060);
austausche.
Aber dann bekomme ich auch von jeder IP alle Daten.
Wenn ich das genau sehe, mache ich den gleichen Fehler wie auf
http://www.qtcentre.org/threads/19755-QUdpSocket-binding-doesn-t-work ?
Wie kann ich jetzt eine bestimmte IP herausfiltern bzw. nur Nachrichten von einer bestimmten IP empfangen?
Viele Grüße und vielen Dank im Voraus
Sebastian
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Bei
kannst du zwar eine IP angeben, aber auf diese IP bindest du dich. Das muss also eine IP deines Rechners sein, und interessant für dich ist das erst dann, wenn du mehr als eine Netzwerkschnittstelle hast. Nimm dort ANY.bind()
Wenn du dann nur von einer gewissen IP (Gegenüber, nicht lokale Netzwerkschnittstelle) ein Paket empfangen willst, dann musst du das Paket empfangen und dann über den Absänder filtern, ob du das Paket haben willst.
EDIT: willst du die Pakete wirklich von einem bestimmten Port (= Absender) empfangen, oder eher an einem bestimmten Port (= Ziel)? Letzteres wäre sinnvoller und auch das einzig einfach Mögliche, und ganz nebenbei auch das was du gerade programmiert hast.
Beitrag zuletzt geändert: 12.1.2015 11:19:57 von hackyourlife -
Hallo hackyourlife,
vielen Dank für die schnelle und kompetente Antwort.
Wenn jemand interessiert ist, wie man die IP des Senders herausbekommt:
http://stackoverflow.com/questions/5870521/qt-network-broadcasting-question-to-get-sender-ip
Viele Grüße
Sebastian -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage