Avatar billede danielhep Nybegynder
30. april 2002 - 14:37 Der er 11 kommentarer og
1 løsning

File stream

Hej

Jeg er ved at prøve at få noget kode til at fungere.
Den ene sender den anden modtager..
Problemet er at jeg kan godt sende det, men den som modtager får ikke noget, kun den fil som der bliver oprettet: FileCreate("NyFil.zip");
Og den fylder 0 Kb, og det er ret Ufedt...

----Server----
Memo1->Lines->Add("Reciving file...");
  unsigned ch;
  int H;
    H = FileCreate("NyFil.zip");
  while (Socket->ReceiveBuf(&ch,1)==1)
  {
    FileWrite(H,&ch,1);

  }
  FileClose(H);
-------------------

----client---------
TFileStream *F;
  F = new TFileStream("Stream1.zip",fmOpenRead);
  Client->Socket->SendStreamThenDrop(F);
-------------------
Avatar billede laffe Nybegynder
30. april 2002 - 14:40 #1
Fik du ikke mit svar ?
Avatar billede laffe Nybegynder
30. april 2002 - 14:43 #2
En Serversocket kan have flere clientsockets åben ad gangen. Derfor har den en liste af socket (Connections). I dit eksempel går jeg ud fra du kun har en client på, så derfor skal du explicit udpege den socket connection, som du vil læse fra:

while (Socket->Connections[0]->ReceiveBuf(&ch,1)==1)
Avatar billede laffe Nybegynder
01. maj 2002 - 20:36 #3
>Danielhep. Fik du det til at virke ?
Avatar billede danielhep Nybegynder
03. maj 2002 - 00:11 #4
Hey sorry ventetiden..Har lige været til Kbh Rap i Rust..Det var for vildt...Nå men nej, ikke helt...Den sender ja, men ikke som jeg ville have den til..

Det er ligesom at man har en server og nogle clienter...Enten serveren eller en client vælger at sende en fil til en anden..F.eks server eller en anden client....

Men jeg kan ikke få det til at virke sådan helt sådan som jeg beskriver.
Avatar billede laffe Nybegynder
03. maj 2002 - 00:27 #5
Hvis du har en Server og mange clienter, som alle har connected sig til serveren, så bliver du nød til at holde styr på de enkelte connections hos serveren.
dvs at.

Den første client ligger på: Socket->Connections[0]
Den anden  client ligger på: Socket->Connections[1]

osv.



men hvad er det helt præsis der ikke virker ?
Avatar billede danielhep Nybegynder
03. maj 2002 - 12:28 #6
Jeg kan nok ikke lige sige helt præsist hvad der er i vejen, men du sendte mig jo her for et stykke tid siden et eks med server og client til file streaming...
Men for at gøre det nemmere, eller hvis det er det, så har jeg besluttede mig for at det skal fungere således, at man skriver (angiver), den IP-adresse på den som man vil sende filer til.

--------------
unsigned ch;

Hvad er dette??
---------------
while (Socket->Connections[0]->ReceiveBuf(&ch,1)==1)

Hvad betyder dette "1" tal, og "&ch" ?????
-----------------
Avatar billede laffe Nybegynder
03. maj 2002 - 14:01 #7
ReceiveBuf(&ch,1)

Betyder læs 1 byte og put den over i 'ch' variablen.

ReceiveBuf er en function. Den returnerer, hvor mange bytes den rent faktisk har læst. Derfor :
    while(Socket->Connections[0]->ReceiveBuf(&ch,1))==1

Sagt på dansk:

Sålænge du kan læse en byte, så gør det.
Avatar billede danielhep Nybegynder
04. maj 2002 - 16:45 #8
Ok det forstår jeg godt...

unsigned hvad er det???
Avatar billede laffe Nybegynder
05. maj 2002 - 20:27 #9
unsigned = "uden fortegn" = tal fra 0 -> et eller andet.

Altså positive heltal.
Avatar billede laffe Nybegynder
05. maj 2002 - 20:29 #10
Hov, jeg ser lige, at du i dit oprindlige kode angiver ch som en unsigned. Det skal være en unsigned char

----Server----
Memo1->Lines->Add("Reciving file...");
  unsigned ch;    <----- skal være "unsigned char ch;"
  int H;
    H = FileCreate("NyFil.zip");
  while (Socket->ReceiveBuf(&ch,1)==1)
  {
    FileWrite(H,&ch,1);

  }
  FileClose(H);
-------------------
Avatar billede danielhep Nybegynder
06. maj 2002 - 00:42 #11
Ok...Fordi jeg ved godt hvad en Unsigned er generelt, men en "unsigned ch", var jeg lidt i trivl om..Det kunne da godt være at den skulle så sådanne ud...Men ok......
Avatar billede laffe Nybegynder
07. maj 2002 - 11:34 #12
char -127..127
unsigned char 0..255
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester