[gelöst] QSocket ständig im Satus CONNECTING

Alles rund um die Programmierung mit Qt
Antworten
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

[gelöst] QSocket ständig im Satus CONNECTING

Beitrag von stonecold »

Hallo,

ich hatte ja bereits in der vergangenen Woche einige Fragen gepostet.
Nun ist folgendes mein Problem.

Ich versuche mit einem QSocket auf einen "herkömmlichen" Socket zu zu greifen. (Ich habe die Gegenstelle nicht selbst implementiert, ist halt ein Standard Linux Socket)

Erst ist es nicht so aufgefallen, da das Verbinden augenscheinlich und auch das Senden der Daten funktioniert hat. Irgendwann habe ich bemerkt, dass die Signals connected() und connectionClosed() nicht vom QSocket gesendet werden, was etwas schlecht für die weitere Verwendung ist.
Einige Ausgaben zeigen, dass sich der QSocket nach dem versucht wird eine Verbindung auf zu bauen die gesamte Zeit im im Status "CONNECTING" befindet, also nie in den Staus CONNECTED wechselt.

Kann mir vielleicht einer sagen wo evtl. das Problem liegt, oder hatte jemand schon mal ein ähnliches Problem? Benötigt Ihr ein Codebeispiel????

Vielen Dank für Antworten und schöne Grüße....
Zuletzt geändert von stonecold am 12. Dezember 2007 07:22, insgesamt 1-mal geändert.
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

Hi,

Beispielcode könnte hier wirklich helfen ...

CU Tom
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hallo Tom,

danke für die schnelle Antwort.
Das Problem mit den connecting scheint gelöst zu sein. Ich weiß es nicht genau aber evtl. gab es ein Problem mit konkurrierenden Portnutzern.

Nun habe ich aber schon wieder ein neues Problem und zwar bricht mein Prog mit der Fehlermeldung "Broken Pipe" ab wenn ich versuche Daten an einen noch nicht verbundenen Empfänger zu senden. Kannst du dir das erklären? Ich meine
"int error = socket->writeBlock( data, msgSize );" Sollte doch einen Fehlercode liefern wenn was nicht geklappt hat und nicht das Programm zum Erlegen bringen oder???
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

stonecold hat geschrieben:Nun habe ich aber schon wieder ein neues Problem und zwar bricht mein Prog mit der Fehlermeldung "Broken Pipe" ab wenn ich versuche Daten an einen noch nicht verbundenen Empfänger zu senden.
Das (Unix-)Signal wird vom Kernel geschmissen.. man wuerde meinen, das sollte von Qt sauber abgefangen werden (wie du schon gedacht hast..). Evt. hilft der workaround, dass du den Signal-Handler ueberlaedst und dadurch den Programmabruch verhinderst.. der Code ist damit jedoch weniger portabel. Hilfe zur Signal-Behandlung: "man signal" in de Konsole..

[edit]
"writeBlock()" scheint Qt3 zu sein... mit Qt4 sollte man offenbar "write()" nehmen..
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Danke für die Antwort.

Ich hab's jetzt so gemacht, dass ich vor jedem Senden nochmal den Status des Sockets abfrage.... und ggf. garnicht erst sende.

Ja ich benutze Qt 3.3 (gezwungener Maßen).
Antworten