22. april 2002 - 14:49
Der er
22 kommentarer og 1 løsning
Send Files
Dette spøgsmål handler kun om Borland Builder C++ 5.0!!! Hvis man f.eks har et chat program og man så vil sende filer til en anden bruger hvordan kan man så¨gøre det i builderen?? Hvis der er nogle som har en kode eller et link så ville det være helt fint..
Annonceindlæg fra Academic Work Denmark A/S
22. april 2002 - 15:26
#1
Man kunne sende dem via socket. I CBuilder med en TServerSocket/TClientSocket. TClientSocket->SendStream(TStream* AStream); 1. Skab en socket forbindelse mellem A og B 2. A Sender filen over til B. 3. B modtager stream. Det burde være nemt da det er en form for en vejskommunication. Fra A -> B
22. april 2002 - 15:27
#2
Har desværre ikke noget kode lige nu. Men jeg kan lave noget lidt senere.
22. april 2002 - 15:42
#3
Her flytter jeg en fil fra A til B via TStream. Den måde jeg modtager daat på kan helt sikkert laves bedre, men nedenstående viser princippet i det. //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Server->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Client->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Server->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Client->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerListen(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Listen"); } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { Memo2->Lines->Add("Connect"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { TFileStream *F; F = new TFileStream("Unit1.h",fmOpenRead ); Client->Socket->SendStreamThenDrop(F); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Reading..."); char Buffer[1024*128]; unsigned ch; int i=0; while (Socket->ReceiveBuf(&ch,1)==1) { Buffer[i++] = ch; } Memo1->Lines->Add(Buffer); } //---------------------------------------------------------------------------
22. april 2002 - 15:43
#4
Logikken er ret simpel. Du sender via sockets, som beskrevet af laffe. Du bør dog bryde filen ned i mindre segmenter, da der er en max. størrelse på TCP-pakker. Disse segmenter skal sendes en ad gangen, og modtageren skal så samle dem til en fil igen. Jeg er på arb. lige nu, men kan poste koden til en fil-server/klient lavet i builder når jeg kommer hjem.
22. april 2002 - 15:49
#5
> kamikaze. Jeg håndterer kun 1 byte ad gangen. derfor behøver jeg ikke spekulere over størrelsen på TCP pakker. Man kan så diskutere, og min måde er særlig hurtig ;).
22. april 2002 - 15:51
#6
laffe >> sorry, det så jeg ikke i farten :o)
22. april 2002 - 16:11
#7
Meget meget godt..Men lige en lille forspørgsel....Jeg er rimlig grøn i Builder, og er ikke så meget inde i den...Så ville det være for meget at spørge om "Laffe" om du ville putte koden ind i en form, og sende den til "danielhep@ofir.dk"????
22. april 2002 - 17:33
#8
Du skal få koden...
22. april 2002 - 18:17
#9
Jeg har ikke givet nogen af knapperne en fornuftig caption. Spørg, hvis der er noget.
23. april 2002 - 11:01
#10
>Danielhep. Virker det ?
23. april 2002 - 11:38
#11
Laffe>> Ja det virker da..Men jeg kan bare ikke finde ud af at gøre sådan så det er 2 programmer...Jeg har nemlig 2 computere....
23. april 2002 - 12:45
#12
I din server applikation placerer du en TServerSocket component. I din client applikation placerer du en TClientSocket component. Server applikation ligger på Computer A. Client applikation ligger på Computer B. I din client applikation skal du angive ip-adr. på Computer A (din server). Dette gøres på din TClientSocket->Host property. Du skal også angive en port som begge applikationer bruger f.eks: port 8888.
23. april 2002 - 12:59
#13
> danielhep. Jeg har lavet en Client og en Server applikation. Vil du have dem ?
23. april 2002 - 15:04
#14
JA meget gerne..
23. april 2002 - 15:16
#15
Hvad skal jeg ændre her for at få filen "test.txt" ned på harddisken hvor jeg har lyst til??? void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Reading..."); char Buffer[1024*128]; unsigned ch; int i=0; while (Socket->ReceiveBuf(&ch,1)==1) { Buffer[i++] = ch; } Memo1->Lines->Add(Buffer); }
23. april 2002 - 20:07
#16
I mit eksempel kan du skrive: void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Reading..."); char Buffer[1024*128]; unsigned ch; int i=0; while (Socket->ReceiveBuf(&ch,1)==1) { Buffer[i++] = ch; } Memo1->Lines->Add(Buffer); Memo1->Lines->SaveToFile("nyfil.txt"); <--------------- }
23. april 2002 - 20:41
#17
Hva nu hvis det ikke er en *.txt fil som jeg vil sende..Men en *.zip??
23. april 2002 - 21:42
#18
void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Reading..."); unsigned ch; int H; H = FileCreate("NyFil.dat"); while (Socket->ReceiveBuf(&ch,1)==1) { FileWrite(H,cg,1); } FileClose(H); }
23. april 2002 - 21:43
#19
Howsa, en skrive bøf FileWrite(H,cg,1); -> FileWrite(H,ch,1);
23. april 2002 - 21:45
#20
Den siger at der er en fejl i sætningen: FileWrite(H,cg,1); Det er "cg" den ikke kan forstå??
23. april 2002 - 21:47
#21
der skal stå ch istedet for.
23. april 2002 - 21:49
#22
Sorry. Her kommer den rigtige: FileWrite(H,&ch,1);
24. april 2002 - 17:00
#23
ok..Jeg kigger på det...tak for hjælpen :)
Kurser inden for grundlæggende programmering