На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Объясните новечку
    Как послать данные по сети (ну какой-нибудь файл скажем test.txt) с помощь компонента TClientSocket или TServerSocket ???
      TClientSocket.SendStream()
        А нельзя по подробнее как конкртно послать какой-либо файл
        я просто новичок мало что знаю
          Создать поток, например, TMemoryStream. Загрузить в него твой файл. Потом послать этот файл по сокету.
            чем дальше тем менее понятно =))

            наскока я понял  чтобы послать файл(test.txt) я должен сделать так :
            void __fastcall TForm1::Button1Click(TObject *Sender)
            {
            TFileStream  *Stream1;
            Stream1=new TFileStream("C:\\test.txt",fmOpenRead);
            ClientSocket1->Socket->SendStream(Stream1);
            }
            ну IP и порт указать это понятно


            а на стороне serva что долно быть

            void __fastcall TForm1::ServerSocket1ClientWrite(TObject *Sender,
                 TCustomWinSocket *Socket)
            {

            ???? //ServerSocket1->Socket->ReceiveBuf(?? );

            }
            как положить полученный сервом файл скажем в папку какую либо
            с:\\papka\test.txt
              Сервер программируется на событие onClientRead
              У него есть Socket.ReceiveText который и будет содержать байты пересланного файла.
              Чтобы сохранить на диск принятый файл, нужно принимать же опять в поток, а потом воспользоваться методом SaveToFile() последнего.
                Посмотри исходники в Examples в самом Builder e.
                  Всё сделал, но облом =))
                  IP и port всё указал всё работает, текст посылал ,а файл не шлется пишет
                  ошибку какую-то
                  С потоками все работает (файлы с диска на диск копировал) ,а как по сети захочу послать,ну правда сам себе с одного диска на другой(по сети), то облом.

                  Клиент:

                  ClientSocket1->Active=true;
                  TMemoryStream *Stream1;
                  Stream1= new TMemoryStream();
                  Stream1->LoadFromFile("C:\\test.txt");
                  ClientSocket1->Socket->SendStream(Stream1);
                  Stream1->Clear();

                  Серв:

                  void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
                       TCustomWinSocket *Socket)
                  {
                  AnsiString asd=Socket->ReceiveText();
                  ShowMessage(asd);
                  TMemoryStream *Str,*Str1;

                  Str= new TMemoryStream();
                  Str1= new TMemoryStream();
                  ServerSocket1->Socket->ReceiveBuf(Str,Socket->ReceiveLength());

                  Str1->CopyFrom(Str,Str->Size);
                  Str1->SaveToFile("d:\\text.txt");

                  Str->Clear();
                  Str1->Clear();

                  }
                  что тут не так ???
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0251 ]   [ 16 queries used ]   [ Generated: 2.05.24, 06:07 GMT ]