Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 перевести???

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)