![]() |
Text beim Connect mitschicken
hi!
Ich hab nen Kleinen Chat geschrieben(der Funzt auch soweit). Und jetzt möchte ich die User verwalten. und dazu würde ich gerne wissen, ob man bei connecten des Clients, einen Namen mitschicken kann, den ich dan beim Event OnClientConnect vom Server abfragen und speichern kann. |
Re: Text beim Connect mitschicken
So, hab das Problem schon selber gelöst.
Client: Clientsocket1.Host:=Nickname; Server (OnClientConnect) Socket.RemoteHost; |
Re: Text beim Connect mitschicken
hi,
ich gehe mal davon aus, dass du die TServerSocket- und TClientSocket-komponenten verwendest. verschick' deine nachricht doch einfach im OnConnected-Event des Clients ;) aeno edit: ähm naja, so, wie du das jetzt löst, mag's vielleicht funktionieren. aber ich persönlich find das nicht schön und glaube, dass es da evtl. noch zu fehlern kommen kann :gruebel: |
Re: Text beim Connect mitschicken
da glaubst du richtig^^
hab schon fehler bekommen :( werd ich mal versuchen obs so geht danke //edit muss ich den senden befehl, bei OnConnect oder bei OnConnecting reinschreiben? |
Re: Text beim Connect mitschicken
Also bei mir geht das irgendwie net.
der schickt den text nicht mit. |
Re: Text beim Connect mitschicken
also du musst beim TClientSocket das OnConnect-Event folgendermaßen ausrüsten:
Delphi-Quellcode:
(OnConnect wird ausgeführt, sobald die verbindung steht. OnConnecting wird ausgeführt, nachdem der Server gefunden wurde, aber noch bevor die verbindung aufgebaut ist)
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket); begin Socket.SendText('nick:aenogym'); end; im server musst du dann im OnClientConnect folgendes machen:
Delphi-Quellcode:
viel erfolg,
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var s: string; begin //wenn wir jetzt sofort daten holen, kann es sein, dass der client noch gar nicht soweit ist. //ReceiveText() gibt also einen leeren string zurück. //mit der while-schleife wird erreicht, dass ReceiveText() so oft ausgeführt wird, bis //endlich daten angekommen sind. das application.ProcessMessages() dient dazu, dass //unser programm während der schleife nicht "einfriert" s := socket.ReceiveText(); while s = '' do begin s:=socket.receivetext(); application.ProcessMessages(); end; showmessage(s); end; aeno edit: server-code korrigiert |
Re: Text beim Connect mitschicken
super vielen dank.geht super, echt gute idee.(hätte ich auch selber drauf kommen können^^)
|
Re: Text beim Connect mitschicken
Moin!
OMG!!!
Delphi-Quellcode:
1. ReceiveText kann deine ganze Nachricht gestückelt wiedergeben, daher ist nichtmal gesagt, das ein ReceiveText mit einem Inhalt <> '' das richtige enthält
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var s: string; begin //wenn wir jetzt sofort daten holen, kann es sein, dass der client noch gar nicht soweit ist. //ReceiveText() gibt also einen leeren string zurück. //mit der while-schleife wird erreicht, dass ReceiveText() so oft ausgeführt wird, bis //endlich daten angekommen sind. das application.ProcessMessages() dient dazu, dass //unser programm während der schleife nicht "einfriert" s := socket.ReceiveText(); while s = '' do begin s:=socket.receivetext(); application.ProcessMessages(); end; showmessage(s); end; 2. Eine Thread-basierende Kommunikation wieder in ein Polling Abfrage System zu drücken ist wirklich mal eine Leistung. 3. Mit Application.ProcessMessages die GUI bedienbar machen ohne sich vorher um deren ordentlichen Stand zu kümmern, ist auch mies. 4. OnClientRead nutzen - vorher ist keine Nickangabe möglich. Und wenn im Chat erstmal die IP Adresse steht und während der Laufzeit durch den übermittelten Nick ersetzt wird. Schliesslich geschieht das im Normalfall im Bereich von Millisekunden - aber ein Polling im OnClientConnect ist wirklich die Härte. So, und nun zerreisst euch das Maul über meinen Beitrag, ich bin 2 Tage nicht da... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz