Сокеты Builder C++ 6

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ree4, 16 Aug 2011.

  1. ree4

    ree4 New Member

    Joined:
    9 Mar 2011
    Messages:
    28
    Likes Received:
    2
    Reputations:
    0
    клиент
    Code:
    //cs - ClientSocket
    //od - OpenDialog
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            cs->Address = Edit1->Text;
            cs->Port = 1001;
            cs->Active = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
            if(od->Execute())
            {
                    try
                    {
                    TMemoryStream *ms = new TMemoryStream;
                    ms->LoadFromFile(od->FileName);
                    ms->Position = 0;
                    cs->Socket->SendText("#" + od->FileName +  "!" + IntToStr(ms->Size));
                    Memo1->Lines->Add("отправляем файл " + od->FileName + ", размером " + IntToStr(ms->Size));
                    cs->Socket->SendBuf(ms->Memory, ms->Size);
                    ms->Clear();
                    delete ms;
                    }
                    catch(...)
                    {
                            Memo1->Lines->Add("не пердаёт");
                    }
            }
    }
    //---------------------------------------------------------------------------
    сервер

    Code:
    void __fastcall TForm1::ssClientRead(TObject *Sender, TCustomWinSocket *Socket)
    {
            TMemoryStream *ms = new TMemoryStream;
            AnsiString text = Socket->ReceiveText();
    
            if(text.Pos("#"))
            {
                    filename = text.SubString(text.Pos("#")+1,text.Pos("!"));
                    size = text.Delete(text.Pos("#"),text.Pos("!"));
                    Socket->ReceiveBuf(ms->Memory, StrToInt(size));
                    ms->Position = 0;
                    ms->SaveToFile(filename);
                    ms->Clear();
                    delete ms;
    	     Socket->SendText("файл успешно передан");
            }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormActivate(TObject *Sender)
    {
            ss->Port = 1001;
            ss->Active = true;
    какието ошибки при передаче, в чём проблема и где в коде ошибки?
    Вроде смотрю ошибок в коде нет, передаётся либо пустой файл с пустым расширением либо не передаётся совсем.
    Помогите, буду благодарен