Entwickler-Ecke
Internet / Netzwerk - Text und Buf unterscheiden
Albanac - Fr 04.10.02 12:10
Titel: Text und Buf unterscheiden
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 - 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.
Albanac - Fr 04.10.02 13:32
ich denk schnon aber dann muss ich aber umgangssprache in die uses liste eintragen, oder?
DeCodeGuru - 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 :wink:
Albanac - Fr 04.10.02 14:09
eben, wie kann ich die Datentype unterscheiden
das mit der Umgangssprache war ein scherz...
DeCodeGuru - 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.
Albanac - 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 - 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?
Albanac - 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 - 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. :wink:
Albanac - 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 - 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.
O'rallY - 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)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!