C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38775] Re:TMemoryStream을 Socket 과 연동 하는 방법 ㅠㅠ (박정진님 감사합니다. ㅎ)
utime.김성하 [utime] 1389 읽음    2005-01-17 16:09
안녕하세요 utime입니다.
꼭 MemoryStream은 아니지만 뭐 비슷하게 급조했습니다.
.....\CBuilder6\Examples\Internet\Chat 에 있는 예제 코드를 조금 바꿨는데요~

보내는 부분은
걍 폼에다가 Send 버튼 하나 만들고 이벤트 내용은
void __fastcall TChatForm::btnSendClick(TObject *Sender)
{
    TOpenDialog *op;
    TFileStream *ms;
    char        *Buf;
    AnsiString     sName;

    op = new TOpenDialog(this);
    if( !op->Execute() )
    {
        delete op;
        op = NULL;
        return;
    }

    sName = op->FileName;

    delete op;
    op = NULL;

    if( !FileExists( sName ) ) return;

    ms = new TFileStream(sName, fmOpenRead);
    Buf = new char[ms->Size];
    ::memset( Buf, 0x00, ms->Size );
    ms->Read(Buf, ms->Size);

    ServerSocket->Socket->Connections[0]->SendBuf(Buf, ms->Size);

    delete [] Buf;
    Buf = NULL;
    delete ms;
    ms = NULL;
}
//---------------------------------------------------------------------------

이렇구요

받는 부분은
void __fastcall TChatForm::ClientSocketRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
  //Memo2->Lines->Add(Socket->ReceiveText());
  int   s  = Socket->ReceiveLength();
  char *p = new char[s];
  ::memset( p, 0x00, s);

  Socket->ReceiveBuf(p, s);
  TFileStream *fs = new TFileStream("c:\\test.bin", fmCreate);
  fs->Write(p, s);

  delete [] p;
  p = NULL;
  delete fs;
  fs = NULL;
}
//---------------------------------------------------------------------------

이렇게 했습니다.
뭐 궂이 이미지 파일이 아녀도 상관 없겠지요.
걍 테스트 용도로 했으니 반드시 참고만 하시기 바랍니다.
큰 사이즈의 파일을 보내실 때는 적당 버퍼을 잡으신 후 짤라서 보내세요~
물론 받을 때도 계속 쌓아놓고 있어야 할 테고...
왠만하면 프로토콜 정의해서 보내시는 것이 괜찮죠~ 아니면 indy쓰면 괜찮을 것 같은데... 아직 그건 안써봐서요 헤헷
MemoryStream 이나 FileStream이나 다 같은 부모 자식이기 때문에 이해 하는데 괜찮겠지요?
즐푸하세요~ ^^


아~ 왜이리 일하기 싫은지~ ㅠㅠ;;;

이성제 님이 쓰신 글 :
: TMemoryStream *ms  = new TMemoryStream;
:         this->Image1->Picture->Graphic->SaveToStream(ms);
: 이게 Image를 MemoryStream으로 받은거잖아요
:
: 그다음에 Socket에 TMemoryStream으로 연동 해야 하는데 ㅠ 하는 방법좀 가르쳐 주세요 ㅠ

+ -

관련 글 리스트
38739 TMemoryStream을 Socket 과 연동 하는 방법 ㅠㅠ (박정진님 감사합니다. ㅎ) 이성제 1288 2005/01/12
38775     Re:TMemoryStream을 Socket 과 연동 하는 방법 ㅠㅠ (박정진님 감사합니다. ㅎ) utime.김성하 1389 2005/01/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.