Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#45

Re: Dateiaustausch zwischen clientsocket und serversocket..^

  Alt 11. Okt 2007, 20:19
Wenn du mehr als nur ein Bild übertragen willst, dann musst du ein entsprechendes Protokoll dir ausdenken um Daten und Anweisungen ordentlich auseinander halten zu können. Ich hatte dir vorhin schon geschrieben, dass ReceiveText den komplett empfangenen Buffer ausliest und als String zurück gibt. Was machst du? Du rufst ReceiveText einfach auf im OnClientRead - ohne ab zu prüfen ob du vllt. gerade bei der Bildübertragung bist - nein - einfach die Bytes rausholen und gut ist. Warum auch - ist doch egal, das andere klappt schon.

if Copy(ReceiveText,1,3)='incthen begin Vor allem das witzige ist ja: wenn du da vllt. einen ein kilometerlangen String im Socket hast, dann bekommst du ihn mit diesem einen Aufruf zurück geliefert und dann ist der Socket leer. Ist schön das du davon nur 3 Zeichen abschneidest und den Rest wegwirfst. Wozu sendest du überhaupt soviel?

Wie schon zuvor in diesem Thread hier erklärt: Der Socket hat kein Protokoll und überträgt rein die Daten. Wenn du auf der einen Seite einen String mit einem SendText() reinwirfst, dann kommt er auf der anderen Seite (im schlechtesten Falle) in einzelnen Buchstaben an. D.h. dein OnClientRead wird so oft aufgerufen mit ReceiveLength = 1 wie der String Buchstaben hat, und du bekommst auch immer nur ein Buchstabe. Von daher musst du dich organisieren. Du musst wissen, was da nun im Socket drinne steht und wie du das zu handeln hast. Der Socket macht nichts weiter als die Daten zu übertragen, dabei ist es ihm völlig egal, was er dort überträgt und wie du denkst, das es zusammen gehört. Alles was du auf der einen Seite reinstopfst, kommt auch auf der anderen Seite irgendwann wieder aus. Die Reihenfolge wird stimmen, aber es kann ganz frei geteilt rauskommen. Das zusammenpuzzlen und entsprechen interpretieren ist deine Sache.

Du kannst grundsätzlich nicht einfach Text und Binärdaten mischen, so lange du nicht genau weisst: Nun ist das jeweilige im Socket enthalten bzw. es ist so lang.

Zitat von Muetze1:
/EDIT: Ich habe dir ein Auto verkauft - wenn du daraus ein LKW baust, dann verlierst du die Garantie. Somit musst du selber wissen was du machst. Reparieren kann ich's gerne, aber das kostet wie in jeder anderen Werkstatt Geld...
Wie geschrieben. Du hast es zum LKW umgebaut - und warst nicht vorsichtig genug bzw. hast dich nicht kundig gemacht und bist somit ohne richtiges Wissen über den Code zu Werke gegangen. Nun such eine Werkstatt oder mach es nochmal - dann aber mit viel mehr Vorsicht und Wissen darum!
  Mit Zitat antworten Zitat