안드로이드 개발 질문/답변
(글 수 45,052)
파일 전송과 관련된 문제 입니다.
서버 측에서 다음과 같이 socket ouput stream을 열고,
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream())));
아래와 같이 파일을 읽어온 다음, 버퍼리더를 1024로 설정해 줬습니다.
FileInputStream fileInputStream = new FileInputStream(file);
BufferedReader fileBufReader = new BufferedReader(
new InputStreamReader(fileInputStream), 1024);
그래서 아래와 같이 설정해 주면 클라이언트 측으로 데이터가 날라 갈줄 알았는데 안되네요..
pw.write(fileBufReader.readLine());
pw.flush();
flush()를 쓰지 않으면 1024 버퍼 만큼 읽어 온 다음,
소켓 스트림으로 보내주는거 아닌가요?
BufferedReader에서 1024 만큼 데이터를 읽어 오면 write() 해주도록 구현 하고 싶습니다.
확실한건 클라이언트 측에서 잘못된건 100% 없다는 겁니다. 같은 루틴으로 다른 스레드 에서는
잘 도착 하거든요. 다른 스레드와의 차이는 다른 스레드는 문자 열이고 위 스레드는 파일을 읽어 온다는 겁니다.
문자열이랑 파일이랑 다른 클래스를 써줘야 한다면 어떤걸 써야 하는지요?
도움 부탁 드립니다.
일반적으로는 자동으로 보내지는데 큐가 다 차지 않았을 경우 큐를 채우고 보내기 위해 대기하는 경우가 발생하는데 그때 flush()를 사용하면 다 차지 않은 큐의 내용을 소켓으로 보내는 걸로 알고 있어요.
그리고 readLine()으로 읽으면 파일의 1라인을 읽는거 아닌가요? SDK문서를 보니 1024로 하신건 1024만한 큐를 만드는 것 뿐인거 같은데요..
그리고 이런건 자바 카페에 가시면 많은 분들이 글을 남겨 주실거 같아요.. ^^