Autor |
Beitrag |
Albanac
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 12:10
wie kann ich als Socket erkennen ob das was reinkommt ein Buffer oder ein Text ist?
oder muss ich das ganze mit try und so machn? Oder gar nen anderen Port benutzen?
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Fr 04.10.02 13:26
Ich weiß nicht genau, ob man das unterscheiden kann, bin aber der Meinung, das es nicht geht. Ich würde das ganze so lösen, das ich immer zuerst mit SendText einen Code schicke und dann erst SendBuf benutze. Ein Beispiel:
Client: "will jetzt Buffer schicken"
Server: "jo, is scho recht"
Client: startet SendBuf
Server: empfängt mit ReceiveBuf
Hoffe, du hast verstanden was ich ich meine.
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
Albanac 
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 13:32
ich denk schnon aber dann muss ich aber umgangssprache in die uses liste eintragen, oder?
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Fr 04.10.02 13:48
Hi,
Zitat: | ich denk schnon aber dann muss ich aber umgangssprache in die uses liste eintragen, oder? |
Was meinst du damit? Ich habe das jetzt nicht so ganz verstanden.
Egal, also ich kam zwar noch nie in die Verlegenheit das unetrscheiden zu müssen aber ich würde mal sagen, dass es so ist:
Wenn ein Client mit SendText Strings sendet, dann kommen die beim Server an und der Server weist dann - je nach Datentype (SendText oder SendBuf) - die Daten in den Bereich ReceiveText bzw. ReceiveBuf zu. In dem Fall wäre das dann ReceiveText. Werden Daten mit SendBuf geschickt, kommen die Daten eben in ReceiveBuf. Ich weiss nicht, ob es stimmt. Aber das kann man ja testen. Werde es nächste Woche mal ausprobieren 
_________________ Viele Grüße
Jakob
|
|
Albanac 
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 14:09
eben, wie kann ich die Datentype unterscheiden
das mit der Umgangssprache war ein scherz...
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Fr 04.10.02 14:11
wieso willst du die unterscheiden? Wenn Text über SendText gesendet wurde, dann stehen die Daten in ReceiveText, wenn die Daten über SendBuf gesendet wurde, dann stehen die in ReceiveBuf. -> Die Komponente übernimmt das für dich.
Achja, bin mir immer noch nicht sicher, ob das 100%-ig so ist.
_________________ Viele Grüße
Jakob
|
|
Albanac 
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 14:30
hast glaub ich recht....
andere sache:
kann ich feststellen was für ein typ von Buf (welche elemente darin enthalten sind) das war?
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Fr 04.10.02 14:34
Zitat: | kann ich feststellen was für ein typ von Buf (welche elemente darin enthalten sind) das war? |
Was hast du denn genau vor? Du kannst die Datenn in ein array of Byte laden und dann versuchen, ob du da irgendwelche FileHeader erkennen kannst. Oder habe ich da was falsch verstanden?
_________________ Viele Grüße
Jakob
|
|
Albanac 
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 18:46
var recorda : record wurst:string; fleisch: integer; salat: Tstrings end;
var recordb : record knie:bool; arm: TRichEdit; kopf: Char end;
wie kann ich feststellen ob recorda oder b vorliegt?
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Fr 04.10.02 21:32
was man mchen könnte, wäre den Typ von Daten vor dem Senden mit SendBuf zu senden. Damit könntest du dich auf die Situation einstellen.
Wenn die Records konstante Längen haben, könntest du auch die Größe auslesen und an Hand dieser Information könntest du das dann unterscheiden, wobei diese Variante nur eine Notlösung wäre. 
_________________ Viele Grüße
Jakob
|
|
Albanac 
      
Beiträge: 37
|
Verfasst: Fr 04.10.02 21:42
andere Sache (nochmal)
ich schick in nem Buffer ein TString (inhalt eines Memos) aber irgendwie bekomm ich nix davon (beim auswerten der Variable ist diese leer '()') woran liegts?
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Sa 05.10.02 13:43
DeCodeGuru hat folgendes geschrieben: | wieso willst du die unterscheiden? Wenn Text über SendText gesendet wurde, dann stehen die Daten in ReceiveText, wenn die Daten über SendBuf gesendet wurde, dann stehen die in ReceiveBuf. -> Die Komponente übernimmt das für dich.
Achja, bin mir immer noch nicht sicher, ob das 100%-ig so ist. |
Ich denke nicht, das die Komponente das übernimmt, auf jedenfall meine tat es nicht. Eine Datei oder einen String, den ich mit SendBuf geschickt hatte, konnte ich mit ReceiveBuf, aber auch mit ReceiveText auswerten.
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Sa 05.10.02 14:00
Zitat: |
ich schick in nem Buffer ein TString (inhalt eines Memos) aber irgendwie bekomm ich nix davon (beim auswerten der Variable ist diese leer '()') woran liegts? |
Sende mal n bissl Code.
Ich würde den Inhalt eines Memo sowieso mit Socket.SendText(Memo1.Text); verschicken. ( Empfang dann folgerlich: Memo1.Text := Socket.ReceiveText)
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|