Seite 1 von 1

udpSocket Problem

Verfasst: 22. Januar 2007 17:00
von nyquist
Hallo,

ich soll ein Programm schreiben, das über UPD Daten an einen anderen PC sendet, der diese dann beantwortet. Die Anzahl der eingehenden Antworten und gesendeten Pakete soll mit einer Progressbar dargestellt werden. Das Programm funktioniert auf einem einzigen Rechner problemlos. Sobald ich das Programm nutze, um die Verbindung zwischen zwei Rechnern zu testen scheint es, als ob es zwischen beiden PCs keine Verbindung geben würde (was so eben nicht der Fall ist).

Woran könnte das liegen?

Hier ein paar Code-Schnipsel:

Code: Alles auswählen

// Verbindung zum anderen PC herstellen:

udpSocketRead->bind(QHostAddress(txtIP->text()), Port);

/*
 ...
*/

// Pakete senden und auf Empfang warten:

while(tstart) {
        rec = 0;
        for(i = 0; i < 4; i++) {
            if(tstart) {
                QByteArray datagram = "Test" + QByteArray::number(i);
                udpSocketSend->writeDatagram(datagram.data(), datagram.size(), QHostAddress(txtIP->text()), Port);

                while(...) { // Teste auf Timeout
                    qApp->processEvents();
                    if(udpSocketRead->hasPendingDatagrams()) {
                        QByteArray datagram2;
                        datagram2.resize(udpSocketRead->pendingDatagramSize());
                        udpSocketRead->readDatagram(datagram2.data(), datagram2.size());
                        if(datagram2 == datagram) {
                            rec++;
                            break;
                        }
                    }
                }
            }
        }
    }
Danke und Gruß,

Stefan

Verfasst: 23. Januar 2007 07:18
von macman
Firewall, Paketfilter? Hast Du es auf dem einen Rechner mit der IP des Rechners oder mit der Loop-Back-Adresse probiert?

Verfasst: 23. Januar 2007 10:18
von nyquist
Es waren zwei Institutsrechner von der Uni. Ich habe die IP Adressen der beiden Rechner genommen. Von einer "LoopBack" Adresse weiß ich nichts. Ich versuche mal, ob ich eine Verbindung zwischen einem Rechner und einem lokalten Virtual PC System herstellen kann.


Edit: QT meldet auch immer in den Konsole:

"QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState".

Lokal meldet er das nicht.

Verfasst: 23. Januar 2007 11:09
von macman
Die Loop-Back-Adresse ist 127.0.0.1 oder auch localhost. Hast Du die zum testen auf dem lokalen Rechner genommen oder die echte IP des Rechners?

Verfasst: 23. Januar 2007 11:13
von nyquist
Hallo,

ich habe es grade nochmal getestet. Mit der LoopBack und der richtigen IP Adresse funktioniert es auf *einem* Rechner. Aber nicht auf zwei unterschiedlichen.

Verfasst: 23. Januar 2007 11:16
von Christian81
Vielleicht ein bind() vergessen?
http://doc.trolltech.com/4.2/qudpsocket.html#bind

Verfasst: 23. Januar 2007 11:16
von nyquist
Wenn es hilft, kann ich ja mal die Sourcen beider Programme (per mail) senden.