| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Indy (IdTCPServer и IdTCPClient) |
| Автор: Владислав 31.5.2005, 11:16 |
| Приведите пожалуйста пример как пересылать при помощи этих компонетов файлы. |
| Автор: Гость_Лена 2.6.2005, 09:43 |
| Вот вариант пересылки при помощи Indy. Н диске С должна быть папка 1: На сервере: void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread) { AnsiString C_Path = "C:\\1\\" + ExtractFileName(AThread->Connection->ReadLn()); int hnd; if(!FileExists(C_Path)) { hnd=FileCreate(C_Path); if(hnd==-1) { Application->MessageBox("Не удалось...",C_Path.c_str(),MB_ICONEXCLAMATION); return; } FileClose(hnd); } TFileStream *f = new TFileStream(C_Path,fmOpenWrite); AThread->Connection->ReadStream(f,-1,true); Sleep(5000); delete f; } На клиенте: void __fastcall TForm1::Button4Click(TObject *Sender) { if(OpenDialog1->Execute()){ IdTCPClient1->Connect(); IdTCPClient1->WriteLn(OpenDialog1->FileName); TFileStream *f = new TFileStream(OpenDialog1->FileName,fmOpenRead); IdTCPClient1->OpenWriteBuffer(); IdTCPClient1->WriteStream(f,true,true); IdTCPClient1->CloseWriteBuffer(); delete f; IdTCPClient1->Disconnect(); } } Однако остается еще вопрос – все нормально со всеми файлами кроме видео файлов, они перестают открываться после пересылки. Хотя размеры отправленного и принятого совпадают. Может, кто знает, как исправить? |
| Автор: myk 9.4.2009, 08:30 |
| как это на Indy 10 перевести??? |