Q&A

  • 소켓에러 ,왕초보자 입니다..제발...please
소켓으로 jpg를 읽어들이드는 간단한 것이거든요..
그런데...
클라이언트에서 서버에 jpg가 있는지 없는지 어떻게 하는지 궁금해요...
소켓에 대한 개념이 전혀없구요.
데모를 보고 기냥 바꾸어서 사용한 것인데요..
아래 소스를 보시고 우찌 에러가 나는지 갈켜 주시면 감사*32 하겠습니다.


클라이언트...................................
function  Txsys.photo_down(var i_photo:timage ; i_pcode:integer; i_tag:string):boolean ;
var
  SResponse: string;
  AStream: TmemoryStream;
  i_jpeg:TJpegImage ;
begin
  if i_pcode<=0 then exit ;
  I_photo.Width:=120 ;
  I_photo.Height:=152 ;

  i_jpeg:=TJpegImage.Create ;
  with IdTCPClient1 do
  begin
    Connect;
    while Connected do
    begin
              writeln('read'+i_tag+Int2StrPad0(i_pcode,6)+'.jpg' ) ;
              AStream := Tmemorystream.Create ;
              try
                        ReadStream(AStream, -1, true);
                        AStream.Seek(0, soFromBeginning);
                        i_jpeg.loadfromstream(AStream) ;
                        showmessage(readln ) ; (파일이 있는지 없는지 읽어올려고요)요 부분에서 에러가 납니다.......
                        i_photo.Picture.Assign(i_jpeg);

             finally
            
                        AStream.Free;
                        Disconnect;
             end;
    end;
  end;
result:=true ;
i_jpeg.free ;
end;


서버...........................................................................................
procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
var
  SRequest: string;
  SOutline: string;
  i_comm,i_pcode:string ;
  AStream: TmemoryStream;
begin
  with AThread.Connection do
  begin
     try
        SRequest:=ReadLn ;
        i_comm:=copy(SRequest,1,5) ;
        i_pcode:=copy(SRequest,5,12) ;
        if i_comm='readw'  then
           begin
             if not FileExists(edit1.text+i_pcode)
             then  SOutline:='falsew'
             else
                begin
                     SOutline:='truew' ;
                     AStream := TmemoryStream.Create ;
                     AStream.loadfromfile(edit1.text+i_pcode) ;
                     OpenWriteBuffer;
                     WriteStream(AStream);
                     CloseWriteBuffer;
                end ;
             Writeln(sOutline) ;
             AStream.Free ;

          end;
      finally
          Disconnect ;
      end ;
  end;
end;


1  COMMENTS
  • Profile
    보들레르 2002.01.13 02:37
    파일을 보내주는 곳에서 먼저 파일이 있는지 검사(FileExists)

    하시면 될거 같네요..

    즐거운 프로그래밍 하시길~~