udpSocket Problem

Alles rund um die Programmierung mit Qt
Antworten
nyquist
Beiträge: 10
Registriert: 15. Januar 2007 15:41

udpSocket Problem

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Firewall, Paketfilter? Hast Du es auf dem einen Rechner mit der IP des Rechners oder mit der Loop-Back-Adresse probiert?
nyquist
Beiträge: 10
Registriert: 15. Januar 2007 15:41

Beitrag 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.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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?
nyquist
Beiträge: 10
Registriert: 15. Januar 2007 15:41

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vielleicht ein bind() vergessen?
http://doc.trolltech.com/4.2/qudpsocket.html#bind
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
nyquist
Beiträge: 10
Registriert: 15. Januar 2007 15:41

Beitrag von nyquist »

Wenn es hilft, kann ich ja mal die Sourcen beider Programme (per mail) senden.
Antworten