![]() |
Deutsches Tutorial für ICS
Hallo zusammen,
wollte mal fragen ob jemand ein gutes deutsches Tutorial zu den ICS-Komponenten kennt. Versuche gerade ein kleines Programm zu schreiben, wo die Edit-Felder des Clients an einen Server gesendet werden. Ich komme aber irgendwie nicht weiter. Zwar schaffe ich es zum Server zu connecten aber ich kann nicht einen einzigen Buchstaben schicken oder im Laberfeld des Servers anzeigen lassen. Also vermute ich das ich mit den Ereignissen nicht richtig umgehe. Des weiteren interessiert es mich wann man Wsocket oder Wsocket-Server benutzen sollte. Vielen Dank im voraus Ati |
Re: Deutsches Tutorial für ICS
Hmmm. Vielleicht habe ich dieses Thema ja falsch angefangen. Wollen wir das ganze doch mal mit Leben füllen. Was ich vor habe habe ich ja bereits geschrieben. Hier mal der Qulettext vom CLient.
Button "Connect":
Delphi-Quellcode:
Button Disconnect:
procedure TForm1.Button2Click(Sender: TObject);
begin clsock.Addr:='127.0.0.1'; clsock.Port:='9999'; clsock.Proto:='tcp'; clsock.Connect; end;
Delphi-Quellcode:
Button "Send":
procedure TForm1.Button3Click(Sender: TObject);
begin clsock.Close; end;
Delphi-Quellcode:
Der Client scheint ja auch einwandfrei zu fuktionieren. Das Problem liegt beim Empfänger.
procedure TForm1.Button1Click(Sender: TObject);
var text:string; begin text:= edit1.Text; clsock.SendStr(text); end Benutz wird hier TWSocketServer:
Delphi-Quellcode:
Ich ahbe es aber auch schon mit dem Ereignis-"SessionAvailable" versucht. Ebenfalls ohne Erfolg.
procedure TForm1.FormCreate(Sender: TObject);
begin srvsock.Listen; end; procedure TForm1.srvsockClientConnect(Sender: TObject; Client: TWSocketClient; Error: Word); begin label1.Caption:='Connect'; memo1.Clear; memo1.Text:='Warte auf Daten!!'; end; procedure TForm1.srvsockDataAvailable(Sender: TObject; Error: Word); var text:String; begin label1.Caption:= srvsock.ReceiveStr; end; procedure TForm1.srvsockClientDisconnect(Sender: TObject; Client: TWSocketClient; Error: Word); begin label1.Caption:='Disconnect'; memo1.Clear; memo1.Text:='Dann eben nicht'; end; Wo ist also mein Fehler??? Ach ja da wir so nett ülaudern wollte ich Euch noch nach Eurer Meinung fragen ob ich mit ICS eine gute Wahl getroffen habe oder würdet ihr mir lieber "Winshoes" empfehlen (achtet auf meine Verison). Ich habe nämlich hier so rausgehört, das ICS zumindest besser sein soll als "Winshoes". Bin wie immer für jeden Tip dankbar. Ati |
Re: Deutsches Tutorial für ICS
*Thread ausbuddel*
Ist zwar bestimmt schon zu spät, aber naja ;) Ich beschäftige mich gerade selber mit den ICS. im OnDataAvailable liest du am besten so:
Delphi-Quellcode:
So funktionierst zumindest bei mir (den Buffer kannst du ja anpassen).
procedure TFormMain.WSocketUDPServerDataAvailable(Sender: TObject;
ErrCode: Word); var Buffer: array [0..1023] of char; Len: Integer; Src: TSockAddrIn; SrcLen: Integer; Data: string; begin SrcLen := SizeOf(Src); Len := WSocketUDPServer.ReceiveFrom(@Buffer, SizeOf(Buffer), Src, SrcLen); if Len >= 0 then begin Buffer[Len] := #0; Data := StrPas(Buffer); // mache was mit Data end; end; Eine Alternative wäre, am Server auf LineMode := true zu schalten. Dann kommt pro OnDataAvailable-Event genau eine Zeile an - sprich, solange du kein #13#10 sendest, wird kein OnDataAvailable ausgelöst. Dann müsste auch ReceiverStr funktionieren (glaub ich zumindest). Wichtig ist, dass du auch einen Linien-Begrenzer mitschickst (Server-Eigenschaft LineEnd, default #13#10) - dazu einfach SendStr(Edit1.Text+#13#10); verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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