사이즈를 구한 size = socket_in.read(); 가 이상한데요.
write할 때 사이즈를 보냈으면, 이상없는 코드이지만.
write 할 땐 사이즈를 보내지 않고 socket_out.write( out ); 만 하신 듯 한데요...
socket_out.write( out ); 이전에 사이즈도 보내시던지.
읽는 곳에서 사이즈 만큼 byte array를 구하는 것 대신 무조건 읽어 Stringbuffer append 등으로 합쳐 사용하셔야 할 듯 합니다.