안녕하세요
제가 간단한 카드게임을 만들고 있는데요
예전에 C#으로 짰던것을 안드로이드로 짜서 소켓으로 네트워크로 같이 할 수 있게 만드는 중입니다.
c#이나 안드로이드 둘 다 서버가 될수도 있고 클라이언트가 될수도 있습니다.
현재 c#과 c#간엔 문제가 없고 c#과 안드로이드 그리고 안드로이드와 안드로이드 간 통신에 약간 문제가 있습니다.
현재 게임진행은 잘 되는데(string은 문제없이 잘 됩니다.)
시작할때 자신이 고른 사진(캐릭터)을 서로 전송하여 각각의 화면에 띄워야 하는데
이 부분이 잘 안됩니다.
각각이 고른 사진을 비트맵으로 얻어와서 이것을 byte[]로 변환하여 보내고 있습니다.

이미지를 보내고 받는 부분의 소스코드는
c#서버
Bitmap NewImg = new Bitmap(myImage, new Size(80, 100));  //비트맵사이즈를 변경하고
byte[] sendBmp = Util.ImageToByteArray(NewImg); //비트맵을 byte[]로 변환하고
clntSock.Send(sendBmp); //보냅니다.

byte[] rMsg = new byte[10240000]; 
clntSock.Receive(rMsg); //byte[]을 받아와서
Image img = Util.BytesToImg(rMsg); //Image객체로 변환합니다.
c#클라이언트
byte[] rMsg = new byte[10240000];
clntSock.Receive(rMsg);
Image img = Util.BytesToImg(rMsg);

Bitmap NewImg = new Bitmap(myImage, new Size(80, 100));
byte[] sendBmp = Util.ImageToByteArray(NewImg);
clntSock.Send(sendBmp);
서버와 클라이언트 차이점은 서버가 먼저 보내고 받고, 클라이언트는 먼저 받고 보내는 차이입니다.

안드로이드 서버
Socket clnt;
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(clnt.getOutputStream()));
DataInputStream dis=new DataInputStream(new BufferedInputStream(clnt.getInputStream()));
try {
     dos.write(bmpByte);  //bmpByte는 비트맵을 byte[]로 변환시킨것입니다.
     dos.flush();
      Thread.sleep(500);   //슬립을 안하면 c#으로부터 이미지를 아예못읽어오는것같아요
     dis.read(rMsg); //rMsg는 받아올 byte[]입니다.
     Bitmap bmp=Util.byteArrayToBitmap(rMsg); //받아온 byte[]을 비트맵으로 변환
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
안드로이드 클라이언트
Socket clnt;
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(clnt.getOutputStream()));
DataInputStream dis=new DataInputStream(new BufferedInputStream(clnt.getInputStream()));
try {
    Thread.sleep(500);
    dis.read(rMsg);
     Bitmap bmp = Util.byteArrayToBitmap(rMsg);
     dos.write(Setting.bmpByte);
     dos.flush();
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
안드로이드 역시 서버일경우 먼저 보내고 받아오고, 클라이언트일경우 먼저 받고 보냅니다.

이렇게 코딩을 했는데 어떤 경우에는 이미지가 다 뜰때도 있고
어느정도만 뜨다가 아랫부분은 까맣게 나올때도 있습니다.
안드로이드에서 서버를 돌리면 가끔 아예 이미지가 안넘어올때도 있구요
안드로이드와 안드로이드간에도 이미지전송이 잘 안됩니다.
코딩방식이 잘못된 걸까요?

게임진행에는 아무런 문제가 없는데 이부분에서 며칠째 애먹고 있네요ㅠㅠ
고수님들 도와주세요