AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Socket.ReceiveText

Ein Thema von S - tefano · begonnen am 15. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

Socket.ReceiveText

  Alt 15. Aug 2003, 15:02
Hi,

seit langer, langer Zeit bastel ich hin und wieder mal an einem Chat-Programm, dass der Fertigstellung mittlerweile sehr nah ist.
Eins der geplanten Features war es, neben Strings (also Texten für den Chat) auch Dateien zu verschicken.
Im OnRead- Ereignis des jeweiligen Sockets (benutze TClient- und TServerSocket) hole ich mir den String immer mit ReceiveText aus dem Socket, und prüfe dann anhand der ersten Zeichen im String ob er für mich bestimmt ist.
Wenn ich jetzt allerdings einen FileStream verschicke (siehe Beispiel auf SwissDC), befindet sich in der Verbindung ja kein String mehr, wenn OnRead ausgelöst wird.

Kurz zur Funktionsweise: Ich verschicke nicht einfach die Nachrichtentexte, sondern hänge da noch ein paar Sachen davor, davon sind die ersten beiden (durch Trennzeichen abgetrennt) zum einen quasi meine "Plakette" (ein konstant definierter String, von dem zu erwarten ist dass er von keinem anderen Programm an mich geschickt wird) und danach ein Bezeichner für den Typ der Nachricht. Beispielsweise ob jemand online kommt und sich anmeldet (dann steht da "ON"), wenn jemand offline geht ("OFF"), oder obs ne Nachricht für den Chat ist ("MSG").

Eigentlich wollte ich das einfach so machen, dass wenn ich weder Plakette, noch Typ der Nachricht erkenne, einfach auf gut Glück die Daten in einen FileStream schreibe und den dann unter einem gewünschten Dateinamen abspeichere.
Jetzt frage ich mich allerdings, ob das überhaupt ohne Exception funktionieren kann. Denn ich bin mir nicht ganz darüber im klaren, was Socket.ReceiveText mir am Anfang der Prozedur liefert, wenn der Socket einen FileStream empfängt und keinen String. Gibts dann irgendeinen SocketError, liefert die Funktion mir den Stream als String (also Steuerzeichen etc.), liefert die Funktion einen leeren String, und: Ist der empfangene FileStream nach ReceiveText überhaupt noch da, oder verhält es sich dabei wie mit dem I/O-Result was nach einem Aufruf automatisch auf 0 gesetzt wird?

Oder kann ich tatsächlich einfach zuerst ReceiveText aufrufen, und sofern die Plakette nicht erkannt wurde einfach mit dem FileStream weitermachen?

Danke schonmal,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 15:41
Boah, so lange unbeantwortet blieb eine Frage von mir ja noch nie...
Kann mir da wirklich keiner was zu sagen?
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 15:48
Hi....jaja 30 Minuten is schon ungewöhnlich. abe ris auch ziemlich heiß.

Also zum verschicken von Dateien finde ich persönlich die Indy TrivialFTP Komponenten viel besser. Is ziemlich einfach. Du musst nur Host und Speicherort angeben und schon geht die Post/Datei ab

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 15:53
Zitat von Stanlay Hanks:
Hi....jaja 30 Minuten is schon ungewöhnlich. abe ris auch ziemlich heiß.
Ich weiss nicht ob du richtig auf das Datum geguckt hast. Das sind wenn schon 24 Std. und 30 Minuten.

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 15:55
Sorry. Dann is das wirklich ungewöhnlich.....
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 16:18
Hm, joah, 30 Minuten... naja, hat sich ja geklärt.

Ich hatte auch schon überlegt ob ich mir für den Dateitransfer einfach extra Komponenten auf die Forms setze, die dann ausschließlich dafür gut sind.

Hm, die TrivialFTPs sind mir noch garnicht aufgefallen... hm.
Also komplett durchgestiegen bin ich da noch nicht. Also Dateien ziehen und irgendwo hinschieben kann nur der Client, wenn ich das richtig sehe, der Server kann dem Client also nix schicken, oder?

Hat der Server irgendein RootVerzeichnis, oder kann ich vom Client aus in jeden existierenden und nicht schreibgeschützten Ort auf dem Server zugreifen?
Und ist es auch richtig, dass der Server im OnWrite eigentlich immer die empfangene Datei hinschreiben kann wo er will, unäbhängig vom angegebenen Dateinamen?

Werd das Ganze mal ein Bisschen eingehender studieren, bislang gefällt mir die Sache recht gut...

Bis dann,

S - tefano

P.S.: Beantwortung der ursprünglichen Frage ist übrigens immernoch erwünscht, genauso wie weitere Alternativen
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 16:50
Hi. Nochmal sorry wegen der Bemerkung mit dem Datum...

Hier is ein Tutorial zu den Indys. Vielleicht hilfts ja weiter. Allerdings wird Trivial FTP da nicht besonders ausführlich behandelt

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 17:03
Hast Recht, besonders ausführlich ist das wirklich nicht.
Aber das werd ich wohl durch Rumprobieren hinkriegen.
Wenns Probleme gibt, mach ich am besten nen neuen Thread auf.

Also danke erst-/nochmal,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 18:10
Hm, schade. Hab mir mal sone TestApp gemacht wo ich gucke was passiert wenn ich bevor ich den Stream speichere noch Socket.ReceiveText aufrufe. Leider sind dann tatsächlich alle Daten im String von ReceiveText, in den Stream kommen dann keine Daten mehr.

Werd das dann also auf TrivialFTP aufbauen. Dazu hab ich dann auch direkt ne Frage -> neuer Thread.

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 18:50
Hab das noch nicht ganz verstanden. Ist TrivialFTP ne Kompo oder ein Protokoll oder ne Unit oder sonstwas?

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  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 03:54 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