안드로이드 개발 질문/답변
(글 수 45,052)
소켓을 이용하고 있습니다. 그런데 잘 안 되네요.
지금 촬영 후에 영상을 PC로 보내는 것에는 성공을 했는데,
이제는 용량은 같은데 아무래도 앞 부분(헤더?)이 제대로 들어오지 않는 것 같습니다...
어디가 문제일까요..?
// 전송 하는 Android 쪽 코드
try {
DataInputStream dis = new DataInputStream(new FileInputStream(new File(fileName)));
DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
Delay.sleep(5000);
handler1.sendMessage(handler1.obtainMessage());
int bytesAvailable = dis.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[1024];
int bytesRead = dis.read(buffer, 0, bufferSize);
while(bytesRead > 0 || i == 1)
{
if(bytesRead <= 0) {
while(bytesRead <= 0) {
Delay.sleep(750);
bytesAvailable = dis.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[1024];
bytesRead = dis.read(buffer, 0, bufferSize);
}
}
dos.write(buffer, 0, bytesRead);
dos.flush();
bytesAvailable = dis.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[1024];
bytesRead = dis.read(buffer, 0, bufferSize);
}
dos.close();
} finally {
sock.close();
handler1.sendMessage(handler1.obtainMessage());
}
} catch (Exception e) {
handler2.sendMessage(handler2.obtainMessage());
}// 전송 받는 PC 쪽 코드
while(true)
{
Socket sock = serverSocket.accept();
System.out.println("수신중....");
try{
String str = "video.3gp";
System.out.println("수신중인 파일 이름 : " + str);
File f = new File("d:\\", str);
FileOutputStream fStream = new FileOutputStream(f); // File file;으로부터 OPT스트림을 가져옴
BufferedInputStream biStream = new BufferedInputStream(sock.getInputStream()); // URLConnection 으로부터 IPT스트림을 가져옴
byte[] buffer = new byte[1024];
int bytesAvailable = biStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
int bytesRead = 0;
while(true)
{
if((bytesRead = biStream.read(buffer)) <= 0) {
Delay.sleep(1500);
if((bytesRead = biStream.read(buffer)) <= 0) break;
bytesAvailable = biStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
}
fStream.write(buffer, 0, bytesRead);
bytesAvailable = biStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = 0;
}
fStream.close();
biStream.close();
System.out.println(str+" 수신완료");
}
catch(Exception e){
System.out.println("서버 에러!!");
e.printStackTrace();
}
finally{
sock.close();
}
}(공지사항을 다 읽었음)



