AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ersatz für TSockets? - Experten gefragt!
Thema durchsuchen
Ansicht
Themen-Optionen

Ersatz für TSockets? - Experten gefragt!

Ein Thema von mcmichael · begonnen am 1. Jul 2009 · letzter Beitrag vom 2. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von mcmichael
mcmichael

Registriert seit: 5. Jun 2008
Ort: Bremen
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:02
Hallo Experten,

ich habe vor längerer Zeit schon einmal einen Anlauf genommen für ein Programm
TcpClient und TcpServer zu verwenden.
Es sollte im Prinzip eine gleichberechtigte Kommunikation (ähnlich einem chat)
zwischen den Rechnern/Programmen ablaufen.

Damals (zu Delphi 5-Zeiten) hatte ich solche Dinge über TClientSocket und TServerSocket
realisiert. Mit Delphi 2009 sind diese Komponenten raus. Man kann sie zwar wieder
einbauen (habe ich auch gemacht) aber mit den Strings haben sie so ihre Schwierigkeiten.

Also sollten TcpClient und TcpServer ran. Dort fehlten die Ereignisse um
auf empfangene Strings zu reagieren oder Methoden um vom Client zum Server
zu senden (das sei verpönt, wurde mir erläutert.)

Fehlanzeige ebenso mit den Indies. Teuren Support erkauft um im wesentlichen
die Wort zu hören "Das geht nicht. Sowas macht man ja auch nicht"
"Nur ein Server darf einen Client anrufen, umgekehrt ist Frevel"

Empfehlung: "TSockets verwenden"

Wirklich? Immer noch keine Alternative zu den Sockets verfügbar???
In allen möglichen Tutorials die ich zum Thema "chat" fand werden immer die Sockets
verwendet.

Wie schickt ihr Strings von Rechner a zu Rechner b und umgekehrt?
Und ich kann nicht glauben, daß man in einer Schleife in einem Thread
ständig nachfragen muß ob Daten da sind. Das muß doch ereignisgesteuert möglich sein...

any response appreciated!

McMichael
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:14
Evtl. ist SoNIC ja was für dich. Laut Beschreibung unterstützt es Events (bzw. Eine Callback-Prozedur) und hat ein Beispiel-Chatprogramm mitgeliefert.

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:16
Zitat von mcmichael:
Wie schickt ihr Strings von Rechner a zu Rechner b und umgekehrt?
Und ich kann nicht glauben, daß man in einer Schleife in einem Thread
ständig nachfragen muß ob Daten da sind.
Das ist eigentlich keine Glaubensfrage, das ist schon fast ein Religionskrieg

ICS und TClientSocket verwenden nichtblockierende Sockets, Indy und Synapse benutzen blockierende.

ICS (http://www.overbyte.be) wäre daher einen Blick wert.

Mit Threads (TIdThread zum Beispiel) arbeite ich aber lieber, da ich dabei genau steuern kann wieviele Bytes ich empfange. Mit ICS und ClientSocket erhält der Client immer einen ganzen Schwung Daten, aber zerhäckselt an irgendeiner Stelle, unvorhersehbar, Rest kommt halt später.

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:19
wie mjustin bereits sagte ist das mehr als eine Glaubensfrage. Ich hab es mal mit den Indies versucht aber finde TServerSocket und TClientSocket einfach am besten. Wenn man sich um beide eine schöne Klasse mit entsprechendem Protokoll baut finde ich es unschlagbar.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:21
Ich würde auch zu den alten Sockets raten. Du solltest aber tatsächlich auf SendTest und ReceiveText verzichten; das macht meistens sowieso nur Ärger. Mit SendBuf und ReceiveBuf kannst du ja genauso gut Strings versenden, nur musst du dir dort eben bewusst sein, ob es sich um Ansi- oder UTF-16-Daten handelt.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:22
Schau mal hier: http://www.overbyte.be

Diese Komponentensammlung arbeitet nicht in Thread-basierend (wie das die Indy-Server tun). Mit allen Vor- und Nachteilen, die das hat. Das man nichts vom Client zum Server schicken soll, habe ich ja noch nie gehört... Was mache ich in diesem Moment denn gerade?
  Mit Zitat antworten Zitat
Benutzerbild von mcmichael
mcmichael

Registriert seit: 5. Jun 2008
Ort: Bremen
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:34
Zitat von Apollonius:
... Du solltest aber tatsächlich auf SendTest und ReceiveText verschicken; ...
damit ich das jetzt richtig verstehe: gemeint war möglicherweise
Du solltest aber tatsächlich auf SendText und ReceiveText verzichten.

oder?
wenn ja: warum denn?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:44
Arg. Natürlich war "verzichten" gemeint, danke für den Hinweis.
SendText und ReceiveText verstecken die internen Zusammenhänge. Was mit einem Aufruf von SendText geschickt wird, muss nicht in einem Stück aus ReceiveText herauskommen. ReceiveText liefert den gesamten anstehenden Puffer als String; das kann Probleme machen, wenn sowohl Strings als auch Binärdaten verschickt werden. Viele Nutzer sind sich dieser Probleme nicht einmal ansatzweise bewusst. Ansonsten gibt es natürlich noch die Sache mit Unicode. Bei SendBuf und ReceiveBuf treten all diese Probleme nicht auf, insbesondere, weil die Länge der erwarteten Daten angegeben wird und dann auch genau diese Menge ausgelesen wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 21:55
Zitat von Apollonius:
Bei SendBuf und ReceiveBuf treten all diese Probleme nicht auf, insbesondere, weil die Länge der erwarteten Daten angegeben wird und dann auch genau diese Menge ausgelesen wird.
Kann man auch bis zu einem bestimmten Begrenzer (Terminator) - Zeichen lesen?

Bei manchen Protokollen ist nicht im Voraus bekannt, wieviele Zeichen noch gelesen werden müssen, sondern bis zu einem z.B. Nullbyte.

Wenn das mit ReceiveBuf (oder einer anderen Funktion) nicht geht, hat man wieder das Problem, neben der Protokollbehandlung auch die zerbröselten Datenpaketen zusammenlöten zu müssen, was wieder etwas fummelig werden kann...
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Ersatz für TSockets? - Experten gefragt!

  Alt 1. Jul 2009, 22:07
Windows unterstützt kein Lesen bis zu einem bestimmten Zeichen. Um das zu tun, sollte man wohl am besten einen anwendungsseitigen Puffer einrichten, der von Windows bei Bedarf Datenblöcke anfordert.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:39 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