나는 C++ SSH 소켓 서버 (32 비트 리눅스) & 자바 기반 SSL 클라이언트 (윈도우 64 비트)를 사용하고있다. SSL 핸드 셰이크가 성공했습니다. Java 클라이언트에서 C++ 서버로 문자열 데이터를 보내면 & 디스플레이를받을 수 있습니다. 내가 서버 C++ 자바 클라이언트에서 int 데이터를 보낼 때 , 다른 데이터는 내가openssl java to C++ read int issue
자바 소스 보내 수신하고 있습니다 :
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
osw.writeInt(1000);
osw.flush();
C++ readInt을 출처 :
unsigned int result =0;
int byteRead = SSL_read(m_ssl, &result, sizeof(int));
unsigned int rxdInt = htonl(result);
C++면, 내가 인쇄 할 때 바이트의 경우 1 바이트로 읽음 : 1
Expected: e8 03 00 00
received : 00 00 00 00
after htonl: 00 00 00 00
Wi 코드 아래 일, 자사의 SSL 내의 writeInt없이
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(1000);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.write(bb.array());
dos.flush();
는 SSL 내의 writeInt가 작동 바이트로 SSL, 쓰기 INT와 작동하지 않습니다와 C++ 와 협력 C++ 작업, 바이트로 작성. 왜 SSLI의 경우 writeInt 동작이 다른가요?
Google의 [프로토콜 버퍼] (https://developers.google.com/protocol-buffers/) 사용을 고려해보십시오. TLS로 메시지를 사용하는 것이 훨씬 쉽습니다. 유선 형식 및 프리젠 테이션에 대해 걱정할 필요가 없습니다. – jww
의미를 파괴하는 코드가 더 이상 편집되지 않으므로. 'ByteBuffer'를 가진 변형은 무의미합니다. – EJP