2014-01-29 2 views
-1

TCP/IP 소켓 프로그램이 있으며 클라이언트 프로그램은 C++로 작성되었습니다. 서버 프로그램은 Java로 작성됩니다. 클라이언트에서 서버 소켓으로 보낸 메시지는 바이트, 정수 및 IP 주소 시퀀스입니다. 메시지의 크기를 줄이려면 바이트 만 보내고 바이트 만 수신 한 다음 서버 측에서 변환을 수행하려고했습니다. diff 값 사이에 구분 기호가 없습니다.C++ 클라이언트 및 Java 서버 메시지

  1. 이렇게하려면 클라이언트 측에서 실행해야하는 모든 값을 바이트 배열로 변환하여 보내야합니까?

  2. int를 C++에서 보내는 경우 서버 측에서 무엇을 얻을 수 있습니까?

  3. 정확하게 IP 주소를 보내고받는 방법은 무엇입니까?

은 내가 (예 : INT는 C++로 4 바이트입니다.) 데이터 형식에 손 전에 바이트 수를 알고있는 경우에, 내 서버에 내가 오는 4 바이트의 배열을 변환의 ByteBuffer를 사용할 수 있음을 알고있다 int로.

누군가 기본 해결책이 있다면 알려주십시오. 덕분에,

그래서 내가 C++ 클라이언트에서 바이트 배열 ::

#include <vector> 
using namespace std; 

vector<unsigned char> intToBytes(int paramInt) 
{ 
    vector<unsigned char> arrayOfByte(4); 
    for (int i = 0; i < 4; i++) 
     arrayOfByte[3 - i] = (paramInt >> (i * 8)); 
    return arrayOfByte; 
} 

에 내가 ByteBuffer를 다시 변환하는 데 사용할 자바 서버 nt로 말을 변환하려면이 같은 것을 쓰고 편집했다. 이것이 올바른 방법입니까?

+1

왜 아래쪽 투표 ?? – kavita

답변

0

정확히 어떤 바이트가 전송 될지 결정한 다음 결정에 양측을 코딩합니다. 정수가 0 ~ 30,000 범위에 있어야한다면, 먼저 높은 바이트로 2 바이트를 사용하기로 결정할 수 있습니다. 원하는 것을 골라서 양면에 적절히 코딩하면됩니다.

+0

사실, 그게 내가하고 싶은 걸. 그러나 어떻게 C++ 클라이언트가 int를 바이트로 보냅니 까? – kavita

+0

하지만 원하는. 당신이 결정할 수 있습니다. "낮은 순서에서 높은 순서로 3 바이트가 될 것"이라고 말할 수 있습니다. 또는 프로토콜의 요구 사항을 충족시키는 것은 무엇이든간에. 이에 따라 –

+0

이 편집되었습니다. 확인해주세요 – kavita