안녕하십니까. 이제 막 안드로이드에 입문한 학생입니다.
제가 현재 개발하고 있는것이 있는데. 서버를 C++로 두고 개발을 하고 있습니다.
근데 제가 C끼리 네트웤프로그래밍은 하여봤는데 안드로이드클라이언트와 C++서버는 네트웤프로그래밍이 처음입니다.
책을 찾아보며 여차저차 서버로 메시지보내는거까진 해보았는데
이제 패킷을 조립해서 보내는걸 하고 싶은데 잘 안되네요. C에서 프로그래밍한것처럼 해보곤있는데..
제가 C++에서 네트웤통신을 할때는 헤더구조체에 커맨드값을 넣어서 보내주면 그 커맨드값으로 통신을하였는데
그땐 서버에서 헤더를 recv받아서 헤더의 cmd로 구분해서 짰었는데..
자바에선 그 패킷의 헤더를 어떻게 구별시켜줘야하는지 감이잘 안잡히네요 ㅠㅠ
현재는 이런식으로 해보고있습니다.
주석을 친부분이 패킷을 해보려다 실패한부분이고 안친부분은 그냥 메시지만 보내본 부분입니다.
public void SendData()
{
byte[] packet = new byte[100];
String temp;
InputStream in = null;
OutputStream out = null;
temp = text.getText().toString();
text.setText("");
Toast.makeText(this, temp, Toast.LENGTH_SHORT).show(); // 텍스트가 잘뜨나 확인
byte[] sendip = null;
//ByteBuffer buffer = ByteBuffer.allocate(200);
try
{
in = socket.getInputStream();
out = socket.getOutputStream();
sendip = temp.getBytes("EUC_KR");
//buffer.putInt(100);
//buffer.put(sendip);
//buffer.flip();
//buffer.get(packet);
//out.write(packet);
out.write(sendip);
}
catch (IOException e)
{
e.printStackTrace();
}
}
클라이언트에서 서버로 패킷을 보내줄때 헤더와 바디부분을 어떻게 구분해줘야하는지 조언좀 해주시면 감사하겠습니다.




바이트 어레이를 정의한 다음 직접 앞에서부터 몇 바이트는 헤더를 넣고, 그 다음 바디를 넣으셔도 되구요
ByteArrayOutputStream 같은 걸 쓰셔도 될 것 같네요.