BnetEx - Client braucht 5 Sekunden für eine Nachricht?
Übersicht

![]() |
M0rgensternBetreff: BnetEx - Client braucht 5 Sekunden für eine Nachricht? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
Ich habe schon wieder ein Problem mit meinem Chat. Undzwar sieht meine Hauptmethode für den Client so aus (ist ziemlich genau aus dem BNetEx Beispiel übernommen): BlitzMax: [AUSKLAPPEN] Method Run:Int() Mein Problem ist jetzt: Diese Methode benötigt immer 5 Sekunden bis sie fertig ist. Das Problem habe ich auch schon lokalisiert. Nämlich: BlitzMax: [AUSKLAPPEN]
Bei dem ersten Debuglog sinds noch 0 Sekunden und bei dem Debuglog hinter der Schleife dann immer ziemlich genau 5 Sekunden. Das kuriose: "Still Recieving Message....." wird mir nur ein einziges mal angezeigt: Nämlich dann, wenn der Server auch wirklich eine Nachricht sendet. Ansonsten hängt er an der Stelle nur 5 Sekunden und gibt nichts aus. Kann mit bitte jemand helfen und eventuell erklären woran das liegt? Wenn der Server nichts sendet, dann braucht der Client doch auch nichts zu empfangen (außer das übliche "Hallo, noch da?"). Oder sehe ich das falsch? Lg, M0rgenstern |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
TCP ist blockierend, d.h. bei dem receive wird das Programm angehalten bis er mit dem zuhören fertig ist- was er wohl so nach 5 Sekunden abbricht.
Wenn ich mich nicht irre hatte Vertex aber selbst mal einen Thread eingestellt wie man TCP nichtblockierend mit bnetex nutzen kann. Forensuche sollte da helfen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Bladerunner.
Vielen Dank für die Antwort. Habe aber den Fehler gefunden: Wenn keine Bytes da sind, kann der ja ne Nachricht lesen soviel er will. Es müsste so aussehen: BlitzMax: [AUSKLAPPEN] Result = ClientStream().RecvAvail() Denn wenn er keine Bytes zum lesen hat, dann braucht er die Funktion auch nicht weiter auszuführen. Lg, M0rgenstern EDIT: Naja, das wars doch nicht. Ich hab mir jetzt den Code von Vertex geladen und versuche da durchzublicken. Dankeschön |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hast du irgendwo den Timeout-Befehl gesetzt?
Ich meine, dass der dafür verantwortlich ist, bin mir aber gerade nicht sicher. Ich lasse den zumindest immer weg, weil der bei mir nur Probleme gemacht hatte... |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
WOW.
Wahnsinn. Vielen Dank. Genau das wars. Jetzt funktioniert alles wie es soll. Vielen Vielen Dank. Lg, M0rgenstern |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group