자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
 
		
	
	
		
			Delphi			델파이 xe 인디 TcpClient 컴포에서 TcpServer로 jpg파일 전송시 문제
		
		
			2012.06.13 04:13		
		
	
	
	
		
	
	
				안녕하십니까?
 
델파일 xe를 사용하고 있는 사용자입니다. 델파이 xe의 인디컴포넌트 idTcpClient에서 원격지 컴퓨터의 idTcpServer컴포넌트를 통해 서버로 jpg 파일을 전송하는 부분입니다.
 
물론 보내기 전 파일은 이상없는 상태이구요.윈도우 탐색기에서 파일을 클릭하면 썸네일화면이 나오며,  델파이의 이미지컴포넌트에도 불러올 수 있습니다. 그런데 서버쪽에서 전송받은 jpg파일은 Image 컴포넌트에서 부를 수 없으며 #53에러가 납니다. 전송되는 파일 사이즈는 크기가 같습니다. 그리고 서버쪽의 전송받은 jpg파일을 알씨에서 보면 보여집니다. 델파이에서는 에러가 나지만요.
 
 아래에 전송하고 받는 소스를 참고하여 답변 부탁드립니다.
 
보내는 쪽
 
    Application.ProcessMessages;
    fStream :=  TFileStream.Create( rFileName, fmOpenRead );
    Application.ProcessMessages;
    IdTCPClient1.IOHandler.Write( fStream );
 
 
받는 쪽
 
     Application.ProcessMessages;
     fStream := TFileStream.Create( FileName, fmCreate );
     Application.ProcessMessages;
     try
       AContext.Connection.IOHandler.ReadStream( fStream, StrToInt(FileSize), True );
     finally
       FreeAndNil( fStream );
     end;
			
	
	
	
	
	
		댓글 1
	
	
		- 
			
						읽어들일 사이즈를 지정하지 않은것이 문제인듯 싶습니다.아래와 같이 처리해보시면 좋을것 같습니다.
LStore := TMemoryStream.Create;LStore.Position := 0;Size := AContext.Connection.IOHandler.ReadInt64();AContext.Connection.IOHandler.ReadStream(LStore,Size);									
		 	
    	
	
	
Delphi 델파이 xe 인디 TcpClient 컴포에서 TcpServer로 jpg파일 전송시 문제
2012.06.13 04:13
안녕하십니까?
델파일 xe를 사용하고 있는 사용자입니다. 델파이 xe의 인디컴포넌트 idTcpClient에서 원격지 컴퓨터의 idTcpServer컴포넌트를 통해 서버로 jpg 파일을 전송하는 부분입니다.
물론 보내기 전 파일은 이상없는 상태이구요.윈도우 탐색기에서 파일을 클릭하면 썸네일화면이 나오며, 델파이의 이미지컴포넌트에도 불러올 수 있습니다. 그런데 서버쪽에서 전송받은 jpg파일은 Image 컴포넌트에서 부를 수 없으며 #53에러가 납니다. 전송되는 파일 사이즈는 크기가 같습니다. 그리고 서버쪽의 전송받은 jpg파일을 알씨에서 보면 보여집니다. 델파이에서는 에러가 나지만요.
아래에 전송하고 받는 소스를 참고하여 답변 부탁드립니다.
보내는 쪽
    Application.ProcessMessages;
    fStream :=  TFileStream.Create( rFileName, fmOpenRead );
    Application.ProcessMessages;
IdTCPClient1.IOHandler.Write( fStream );
받는 쪽
     Application.ProcessMessages;
     fStream := TFileStream.Create( FileName, fmCreate );
     Application.ProcessMessages;
     try
       AContext.Connection.IOHandler.ReadStream( fStream, StrToInt(FileSize), True );
     finally
       FreeAndNil( fStream );
     end;
댓글 1
- 
			
						읽어들일 사이즈를 지정하지 않은것이 문제인듯 싶습니다.아래와 같이 처리해보시면 좋을것 같습니다.LStore := TMemoryStream.Create;LStore.Position := 0;Size := AContext.Connection.IOHandler.ReadInt64();AContext.Connection.IOHandler.ReadStream(LStore,Size);
 
                                            