안녕하세요~도무지 해보다가 해결이 안되는 질문이 있어서 이렇게 올리게 되었습니다ㅠ

자바로 클라이언트-서버 통신을 시도하는데 socket갯수에 대해 이해가 안되는 부분이 있어서요~!ㅠ


1.
먼저 java socket에관련된 질문이 있는데요,
제가 안드로이드 프로그래밍을 진행하며 현재 소켓통신을 시도하여 서버(개인 pc)와 통신을 시도합니다.
소켓을 통해서 이미지와 텍스트파일들이 오가는데요,
처음에 소켓을 왔다리 갔다리 1개를 만들어 진행했는데

전송도중 멈추는 현상이 발견되었습니다.

 Socket socket1 = new Socket(serverAddr, serverPort);//Image send Socket



다음과 같이 열어주었었고 DataInput, DataOutput stream을 열어주어서 서로 이미지가 송,수신되던도중
멈추더군요..





OutputStream output = socket1.getOutputStream();
 FileInputStream C_image =
	new FileInputStream(new File("/mnt/sdcard/folder","image"+ ".jpg")); 
DataOutputStream dos = new DataOutputStream(output);
byte[] buf = new byte[4096];
while(C_image.read(buf) != -1){    	  
	dos.write(buf);
	dos.flush();
}




마찬가지로 receive부분도 이런식으로 해줬습니다.
1개의 이미지와 1개의 텍스트가 서버로전송되고 클라이언트는 1개의 이미지와 1개의 택스트를받는
총 4개의 파일이 송수신되는 형태였습니다.
저는 이것을 한 소켓에서 해줬습니다.

그래서 해결책으로 소켓을 4개로 나누어서 진행했더니 그런 오류가 말끔히 사라졌습니다.
도중에 멈추지 않고 제대로 진행되더군요..

순서상 각각의 파일들이 동시에 전송되는바람에 한 소캣에서 멈추는것도 아니었고
순차적으로 파일이 왔다리 갔다리 하는데 왜 소켓이 송수신 갯수만큼 생기면 이상이 없는것인지 궁금합니다.

찾아보다가도 명확한 이유를 설명해놓은것을 못봐서 이렇게 질문을 드려봅니다^^;

2.두번째는 긴 질문은 아니고 책추천부탁드리는 질문입니다^^ㅎㅎ
현재 "안드로이드정복"이라는 책을 보고 있는데 전반적인 설명이 코딩기술을 설명하고있었습니다.
그러나 체계적으로 안드로이드의 동작원리를 공부해보고 싶은데 
책 추천이나 참고사이트부탁드립니다^^;

3.
더불어 영상처리관련 책도 곤잘레스책의 경우 압축기술 위주로 나와있는데 
수학적개념 위주보다 초보자이다보니 쉽게 접근할수있을만한 영상처리관련 책은 없는지요?^^;

학생인지라 질문이 횡설수설 너무 많은것을 질문한것같습니다 ㅎㅎ

긴글 읽어주셔서 감사드립니다.
고수님들의 가르침 부탁드립니다^^