Entwickler-Ecke

Internet / Netzwerk - Netzwerk zu lahm ...


Hossmann - Mo 10.03.03 22:48
Titel: Netzwerk zu lahm ...
Folgendes Problem habe ich:

Ich will ne Integer-Variable übergeben. In dieser wird die Y-Koordinate der Maus geschrieben. Diese soll per socket.SendText und socket.ReceiveText übergeben werden. Das soll wiederrum per Timer sehr sehr oft geschehen. Nun ergibt sich folgendes Problem. Irgendwo wird der Wert nicht schnell genug verarbeitet (schätze mal es liegt bei der Übertragung) und der gesendete Text von mehrerehn Timer-Durchläufen wird aneinander gehängt. Daraufhin gibts nen Error wie "4242424242424242424242 is not a valid integer value". (Die Koordinate di eübermittelt werden soll is "42".

Wenn ich den Timer auf sehr g´roße Intervalle einstelle oder Server und Client auf Localhost starte dann klappts. Nur ist das meiner Meinung nach keine saubere Lösung. Was kann ich also machen, um diesem Problem Abhilfe zu schaffen. Ich meine, es wäre egal ob mal zwischendrin ein Wert gar nicht ankommt, aber dann soll der string nicht verlängert werden.

Bin dankbar für jede Hilfe.


Moritz M. - Mo 10.03.03 22:54

Das ganze soll ein RemoteControl werden, oder?
Das Probelem kenn ich. Nimm den Indy TCP/IP Client bzw. Server. Die senden dass unabhängig. Oder schau, dass die Integervariable immer (zumindest der string der dann verschickt wird) 4 Stellen hat. Wenn du's jetzt empfängst dann schaust du, ob du mehr als vier Stellen hast und wenn ja, dann nimm einfach nur die ersten vier. Das zweite bezieht sich jetzt auf den normalen Delphi TCP/IP-Client.


Hossmann - Mo 10.03.03 23:04

hmm .. hab mir den Indy angeschaut und mal beispiele geguggt. Geht es nicht anders als threadbasierend ?
Und die Anwendung ist wesentlich simpler: Es soll ein Netzwerk-Pong-Spiel werden, wobei eben Server und Client senden müssen. Also müsste ich mit den Indys jeweils einen server und einen client machen oder wie ?


Moritz M. - Mo 10.03.03 23:12

Oder du schreibst ein extra Prog, das nur als Server dient.


Hossmann - Di 11.03.03 13:55

So habe es jetzt mit MÖglichkeit Nummer zwei versucht und es klappt auch soweit. Allerdings is nach ca 10 sec schon der Spaß zu Ende und ich kriege, aus welchem Grund auch immer, ein "List index out of bounds".
Ich verwende allerdings keine Liste und weiß wirklich net wo der herkommt. Es wird lediglich ein Wert über TSocket übergeben, von dem die letzten 4 Zahlen in nen Integer umgewandelt und Anschließend auf die Position eines punktes in nem Canvas übertragen wird ... Wo ist da der (Denk(?))Fehler ?

Langsam verzweifel ich hier noch ...


Moritz M. - Di 11.03.03 14:02

Hab dich zu meiner ICQ list hinzugefügt. Kanns mich ja jetzt so fragen.


O'rallY - Di 11.03.03 16:11

Ich vermute, dass kein Client mehr zu verfügung steht, dem du was senden könntest. Die Clients werden beim Server als eine Liste gehanhabt. Doch kann ich hier wild spekulieren, ohne Code funzt es leider nicht.
Noch eine andere Möglichkeit, um dein Problem zu lösen, ist UDP.


Hossmann - Di 11.03.03 16:24

so ... habs dank onz hinbekommen. Auch der Ball wird schon übertragen. Nur leider scheint das extrem zu laggen. Weil es ruckelt üblest und das bei nem string von 12 zeichen. Sollte ja normal kein Problem sein oder ?

UDP könnte ich auch mal versuchen. Das soll ja schneller sein. Also ich mach mich mal schlau, bin aber dankbar für jeden weitern Rat :)