내 C++ 클라이언트 응용 프로그램과 Java 서버가 있습니다. 클라이언트 응용 프로그램이 연결되어 서버에 데이터를 보냅니다.C++ 중고 클라이언트 : 길이가없는 버퍼를 보내는 방법?
이boost::shared_ptr<TSocket> socket(new TSocket(hostMS, portMS));
boost::shared_ptr<TFramedTransport> transport(new TFramedTransport(socket));
boost::shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
transport->open();
protocol->writeI32(0xCA12EEAA);
transport->writeEnd();
transport->flush();
서버 측 코드는 다음과 같습니다 :
int nMagic =0;
// int nLen = in.readInt(); <------------here is I read the length
int ch1 = in.read();
int ch2 = in.read();
int ch3 = in.read();
int ch4 = in.read();
if ((ch1 | ch2 | ch3 | ch4) < 0)
throw new EOFException();
nMagic = ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
질문은 : 나는 (내 의견을 참조) 작동 하나 개 더 읽기 정수를 추가 를 예를 들어
나는 정수 값을 전송 승인. 우선, 길이 (4 바이트)와 데이터 - 정수를 읽습니다.그것은 클라이언트 길이 (INT) 데이터 (INT)
를 전송하지만, 서버는 단지 데이터를 읽는 것을 의미한다.
어떻게 데이터를 보낼 수 있습니까? 다른 중고품 운송이나 프로토콜을 사용하거나 비 절약 라이브러리를 사용할 수 있습니다 ...
어떻게 다른 쪽은 길이 속성없이 얼마나 많은 데이터를 읽을 알 것 TFramededTransport를 사용해야합니다? –
음 ... 사실. 서버가 그것을 읽지 않습니다. 전에 기본 Java 클래스에서 읽었을 수 있습니다. 내가 hav 다른 실험 emade : 소켓 테스트 유틸리티 헤라클레스 (www.hw - group.com)를 실행하고 서버에 연결 후 16 진수 값을 보냈습니다 - 서버가 성공적으로 그것을 받았습니다. – Oleg