소켓으로 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;
하시면 될거 같네요..
즐거운 프로그래밍 하시길~~