내용은 제목과 같이 델파이에서 보낸파일을 안드로이드에서 수신하는 프로그램입니다.
안드로이드 ... 즉, 자바는 처음하는데... 잘모르겟습니다;;
고수님들 부탁드립니다. ㅠ 참고로 Client에서 Server에 접속은 됩니다. 메시지 송수신은 잘됩니다.
파일이랑 스트링 분리하라고 인터넷에서 본것같아 2개를 분리해뒀습니다.
File 송수신 FileSocket 수신이 안됨.(연결은 되어있음)
메시지 송수신 MsgSocket 정상적으로 잘됨.(아래 소스에는 없습니다.)
# delphi 7 ServerSocket
=========================================================================
sFileName := 'c:\sample.bmp';
try
// FileStream := TFileStream.Create(sFileName, fmOpenRead);
FileStream := TFileStream.Create(sFileName, fmOpenRead or fmShareDenyWrite);
FileStream.Position := 0;
// Add the length of the data, so the client will know how much data to expect.
// Append #0 so it can determine where the size info stops.
for i:= 0 to IdServer.Socket.ActiveConnections - 1 do
begin
IdServer.Socket.Connections[i].SendText(IntToStr(FileStream.Size) );
IdServer.Socket.Connections[i].SendStream(FileStream);
end;
except
FileStream.Free;
end;
=========================================================================
# Android ClientSocket
=========================================================================
DataInputStream dis = new DataInputStream(fileRecevSocket.getInputStream());
Log.i("tree","********************");
Log.i("tree","***AAAAAAAAAAAAAAAA***");
String fName = dis.readUTF();
Log.i("tree","파일명 :" + fName + "을 전송 받았습니다.");
fName = fName.replaceAll("a", "b");
// 파일을 생성하고 파일에 대한 출력 스트림 생성
File f = new File(fName);
fos = new FileOutputStream(f);
bos = new BufferedOutputStream(fos);
Log.i("tree","파일명 :" + fName + "파일을 생성하였습니다.");
//바이트 데이터를 전송받으면서 기록
int len;
int size = 4096;
byte[] data = new byte[size];
while ((len = dis.read(data)) != -1)
{
bos.write(data, 0, len);
}
bos.flush();
bos.close();
fos.close();
dis.close();
Log.i("tree","파일 수신 작업을 완료하였씁니다.");
Log.i("tree","받은 파일의 "
+ ""
+ "사이즈 : " + f.length());
=========================================================================
|