Zitat von
thomasdrewermann:
ich würde der Einfachheit halbe für die Kommandos die Ereignisse Client/Server Read und Client/Server Write benutzen.
Macht er so. Wo siehst du was anderes?
Zitat von
thomasdrewermann:
Dort löst das Event immer aus, wenn er Zeichen empfängt. Der empfangene String wird dann auch direkt übergeben.
Ist mir neu - wo wird denn da ein String übergeben? Du bekommst Sender übergeben und die TCustomWinSocket Instanz welche das Ereignis auslöst, aber einen String? Das wäre doch fatal wenn sich der Socket rausnehmen würde zu behaupten, ich will einen String haben. Der Socket hat gefälligst Daten zu übertragen und sich nicht anschicken zu vermuten was ich haben will - also String, ein Byte oder ein Block binäre Daten...
Zitat von
thomasdrewermann:
Versenden auf Server-Seite geht dann mit serversocket1.Socket[nummer des verbundenen client beginnt bei client 1 mit 0].SendText, auf Client-Seite geht es mit clientsocket1.SendText weil er ja immer nur eine Verbindung hat.
Warum? Er antwortet direkt im OnClientRead auf die empfangenen Packete und nutzt somit die übergebene TCustomWinSocket Instanz - und die findest du auch an den von dir genannten Orten wieder. Aber wo man sie bezieht ist Schnuppe - BlackJack's Weg ist genauso machbar und stellt kein Unterschied dar.
Zitat von
thomasdrewermann:
Man muss nur darauf achten die empfangenen Daten sauber zu trennen, denn kruz hinter einander gesendete Zeichenketten werden manchmal als ein Event übergeben.
... oder mehrere Events bis ein Datenteil empfangen wurde. Aber selbst darauf achtet er in seinem Code.