Socket socket = new Socket(dstAddress, dstPort);
// 데이터 전송용 스트림 생성
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("파일 전송 작업을 시작합니다.");
// 파일 이름 전송
String fName = name;
dos.writeUTF(fName);
System.out.printf("파일 이름(%s)을 전송하였습니다.\n", fName);
// 파일 내용을 읽으면서 전송
BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(bitmapToByteArray(bitmap)));
int len;
int size = 4096;
byte[] data = new byte[size];
while ((len = bis.read(data)) != -1) {
dos.write(data, 0, len);
}
response = dis.readUTF();//문제의 부분
dos.flush();
dos.close();
bis.close();
System.out.println("파일 전송 작업을 완료하였습니다.");
System.out.println("보낸 파일의 사이즈 : " + bitmapToByteArray(bitmap).length);
여기까지 안드로이드 부분이구요
static class startThread implements Runnable {
Socket socket = null;
Ocr ocr;
String pathing = "C:/save/to.jpg";
private DataInputStream dis;
private DataOutputStream dos;
private BufferedOutputStream bos;
public startThread(Socket client) {
// TODO Auto-generated constructor stub
this.socket = client;
ocr = new Ocr();
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("from " + socket.getInetAddress() + ":" + socket.getPort());
try {
System.out.println("파일 수신 작업을 시작합니다.");
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
// 파일명을 전송 받고 파일명 수정.
String fName = dis.readUTF();
System.out.println("파일명 " + fName + "을 전송받았습니다.");
// 파일을 생성하고 파일에 대한 출력 스트림 생성
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:/save/to.jpg"));
System.out.println(fName + "파일을 생성하였습니다.");
// 바이트 데이터를 전송받으면서 기록
int sum = 0;
int len;
int size = 4096;
byte[] data = new byte[size];
while ((len = dis.read(data)) != -1) {
bos.write(data, 0, len);
sum += len;
}
System.out.println(data + " " + len + " " + sum);
dos.writeUTF("dddd");
bos.flush();
bos.close();
dis.close();
System.out.println("파일 수신 작업을 완료하였습니다.");
System.out.println("받은 파일의 사이즈 : " + sum);
} catch (Exception e) {
// TODO Auto-generated catch block
System.err.println(e.getMessage() + " server1");
}
}
자바 서버측입니다.
response에서 read하는부분이 스트림 읽을수있는 size를 확인해보면 0이더라구요
잘받았다고 텍스트를 주는데도 안받아 집니다..
도대체 왜그럴까요