AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TIdTCPServer und -Client - senden und empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

TIdTCPServer und -Client - senden und empfangen

Ein Thema von CocoPops · begonnen am 1. Apr 2014 · letzter Beitrag vom 1. Apr 2014
Antwort Antwort
CocoPops
(Gast)

n/a Beiträge
 
#1

TIdTCPServer und -Client - senden und empfangen

  Alt 1. Apr 2014, 19:09
Liebe DP!

Ich stecke momentan an einem etwas, für mich, größerem Problem fest.

Ich habe zei Programme, einmal Server einmal Client.
Gehen wir davon aus, ich sei schon verbunden.

Sehr einfach gestrickt könnte der CLient so senden: IdTCPClient1.Socket.WriteLn('Bernhard'); .
Und der Server könnte im OnExecute-Event so antworten: AContext.Connection.Socket.WriteLn('Hallo ' + AContext.Connection.Socket.ReadLn); // Hallo Bernhard .

Ich habe etwas von WriteBuffer und ReadBuffer gelesen. Das gibt es in Indy 10 abr nicht mehr also musste ich ein wenig umstricken (Google half mir):

Ich sende mit dem Client ein paar Bytes:
Delphi-Quellcode:
// Client : sendet Byte
procedure WriteByte(Value: Byte);
var
 Buf: TIdBytes;
begin
 Buf := IdGlobal.RawToBytes(Value, SizeOf(Value));
 IdTCPClient1.IOHandler.Write(Buf);
end;
Und im Server empfange ich diese auch korrekt:
Delphi-Quellcode:
// Server : empfaengt Byte
function ReadByte: Byte;
var
 aData: TIdBytes;
begin
 AContext.Connection.IOHandler.ReadBytes(aData, SizeOf(Byte));
 Move(aData[0], PByte(@Result)[0], Length(aData));
end;
Aber wie funktioniert das mit Strings? Momentan sende ich folgendermaßen:
Delphi-Quellcode:
// Client : sendet String
procedure WriteString(Value: string);
// var
// Buf: TIdBytes;
begin
 // Buf := IdGlobal.RawToBytes(Value, SizeOf(Value));
 IdTCPClient1.IOHandler.Write(Value);
end;
Aber beim empfangen tut sich nichts und das Execute-Event bleibt hängen:
Delphi-Quellcode:
// Server : empfaengt String (nicht)
function ReadString: string;
begin
 Result := AContext.Connection.IOHandler.ReadString(ReadByte); // ReadByte = siehe "Server : empfaengt Byte"
end;

Was mache ich falsch und welches ist die bessere Methode? Mit den Buffern oder einfach Socket.WriteLn, Socket.ReadLn ?

Geändert von CocoPops ( 1. Apr 2014 um 19:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TIdTCPServer und -Client - senden und empfangen

  Alt 1. Apr 2014, 22:54
Was willst Du denn genau machen? Streams senden?
Dann schau mal, ob Du über die zwei Links weiter kommst...
Meine aktuelle Lösung ist eine Mischung zwischen beiden, ich habe aber kein komplettes Testprojekt.

http://www.delphipraxis.net/170904-i...bertragen.html
http://www.delphipraxis.net/1184766-post15.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 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