Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Deutsches Tutorial für ICS (https://www.delphipraxis.net/59596-deutsches-tutorial-fuer-ics.html)

Ati 25. Dez 2005 13:47


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

Ati 26. Dez 2005 08:42

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:
procedure TForm1.Button2Click(Sender: TObject);
begin
  clsock.Addr:='127.0.0.1';
  clsock.Port:='9999';
  clsock.Proto:='tcp';
  clsock.Connect;
end;
Button Disconnect:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  clsock.Close;
end;
Button "Send":
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var text:string;
begin
   text:= edit1.Text;
   clsock.SendStr(text);
end
Der Client scheint ja auch einwandfrei zu fuktionieren. Das Problem liegt beim Empfänger.
Benutz wird hier TWSocketServer:

Delphi-Quellcode:
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;
Ich ahbe es aber auch schon mit dem Ereignis-"SessionAvailable" versucht. Ebenfalls ohne Erfolg.
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

H4ndy 25. Apr 2006 13:35

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:
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;
So funktionierst zumindest bei mir (den Buffer kannst du ja anpassen).

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 23:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz