2011-07-18 5 views
0

"서버"에서 "클라이언트"로 1KB의 데이터를 보내려고하지만 바로 얻을 수 없습니다. 여기에 내가해야 할 일이 몇 가지 있습니다 : 1) 데이터를 전송하기 위해 boost-asio 소켓을 사용해야합니다. 2) 데이터가 포함 된 유형 (패킷)을 문자열로 직렬화해야합니다.부스트 직렬화를 사용하여 부스트 - asio 소켓 연결을 통해 직렬화 된 형식을 전송하는 중

다음

이 무슨 일입니다 * 문자 :

첫째, 서버에서 샘플 텍스트 파일에서 데이터의 1킬로바이트를 얻을. 나는 이것을 만들어서 내가 만든 패킷 유형에 넣는다. 이 데이터를 std :: string으로 유지하기 위해 Packet의 데이터 필드를 정의했습니다. (나는 char *를 시도했지만 잘 동작하지 않았다. 다음 단락을 보라).

둘째, boost text_oarchive를 사용하여 직렬화합니다. 문자열을 포함하는 경우 패킷 형식을 serialize하는 데 아무런 문제가 없습니다. 그러나 실제로 원하는 것은 데이터 배열을 char 배열로 serialize하는 방법입니다 (아래의 소켓에서 더 잘 작동하도록)

세 번째 , 나는 부스트 asio 소켓을 통해 그것을 보냅니다. 소켓 연결을 통해 std :: string을 보내는 방법을 찾을 수 없기 때문에 여기에 문제가 있습니다. 예제 및 문서에서 볼 수있는 모든 것은 문자열이 아닌 char * 형식을 사용하는 버퍼가 필요합니다.

그냥 두통입니다. 도울 수 있니? 내가 예로 및 설명서에 표시

+0

코드없이 대답 할 수없는 경우 질문을 편집하여 지금까지 작성한 코드를 포함하십시오. –

답변

0

모든이의 char *의 몇 가지 유형이 아닌 문자열을 사용하여 버퍼 필요가 Boost.Serialization을 사용하여이 작업을 수행하는 매우 간단하지만, 올바른

및 부스트. 아시아. text_oarchive을 사용하여 boost::asio::streambuf으로 직렬화 한 다음 소켓을 사용하여 결과 스트림 버퍼 내용을 보낼 수 있습니다.

자세한 내용은이 질문에 대한 questionmy answer을 참조하십시오.

관련 문제