boost :: asio에서 패킹 된 구조체를 메시지로 전달하는 방법은 무엇입니까? (직렬화 없음)

DEEPANSH NAGARIA

저는 boost :: asio입니다. 메시지와 응답은 모두 패킹 된 구조체의 형태이며 구조체가 패킹됨에 따라 여기서 직렬화를 사용하지 않습니다. 나는 비슷한 질문과 모든 조언 직렬화를 보았지만 그것이 내가 찾고있는 것이 아닙니다 . tcp 연결 boost :: asio를 통해 이러한 구조체의 객체를 어떻게 전달하고받을 수 있습니까? 나는 부스트를 처음 사용하고 그것을 탐구하기 때문에 코드 예제가 많은 도움이 될 것입니다. 미리 감사드립니다.

예제 구조체 :

typedef struct { 
    MessageHeaderInComp MessageHeaderIn;
    RequestHeaderComp RequestHeader;
    uint32_t Username;
    char Password[LEN_PASSWORD];
    char Pad4[LEN_PAD4];


} __attribute__((packed)) UserLoginRequest; 
보다

"packed struct"가 실제로 POD (표준 레이아웃 및 사소한 구성 / 파괴 가능)라는 것을 의미하는 경우, 짧은 비트 직렬화 가능하면 구조체 버퍼 라고 말할 수 있습니다 .

실제로 다른 버퍼 / 표현으로 복사하고 버퍼를 사용할 필요가 없다고 결정할 수 있습니다. 간단 합니다. 객체를 버퍼로 조정하면됩니다 .

UserLoginRequest req;
write(socket_or_stream, boost::asio::buffer(&req, sizeof(req)));
read(socket_or_stream, boost::asio::buffer(&req, sizeof(req)));

수학을 피하려면 배열 선언을 사용하는 것을 선호합니다.

UserLoginRequest req[1];
write(socket_or_stream, boost::asio::buffer(req));
read(socket_or_stream, boost::asio::buffer(req));

물론 비동기 스트림이나 소켓에서도 async_*변형을 사용할 수 있습니다 ( 버퍼의 수명이 항상 작업 완료까지 연장된다는 점을 감안 하면).

관련하여 POD 유형을 버퍼로 연속적으로 저장할 수 있습니다.

std::vector<UserLoginRequest> massLogin(123); // weird, but just for demo
write(socket_or_stream, boost::asio::buffer(massLogin));
read(socket_or_stream, boost::asio::buffer(massLogin));

경고

이러한 종류의 비트 직렬화는 이식 할 수 없습니다. 나는 당신이 이것을 잘 알고 있고 신경 쓰지 않는다고 가정하고 있습니다.

보너스 링크

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

메시지 큐에서 여러 구조체를 역 직렬화 할 때 "boost :: archive :: archive_exception"을 피하는 방법은 무엇입니까?

분류에서Dev

cpp에서 msg-pack으로 중첩 된 메시지를 직렬화하는 방법은 무엇입니까?

분류에서Dev

C #에서 파생 된 개체를이 XML로 직렬화하는 방법은 무엇입니까?

분류에서Dev

XML 직렬화 된 메시지에서 NodaTime 엔티티를 허용하도록 NServiceBus를 구성하는 가장 쉬운 방법은 무엇입니까?

분류에서Dev

구조체에서 세분화 된 메서드를 사용하는 방법은 무엇입니까?

분류에서Dev

Java에서 직렬화 및 직렬화 해제 후 참조를 유지하는 방법은 무엇입니까?

분류에서Dev

상속 된 비 일시적 필드를 직렬화 할 수없는 방법은 무엇입니까?

분류에서Dev

Alpine Linux 3.8에 Chromium 마스킹 된 패키지를 설치하는 방법은 무엇입니까?

분류에서Dev

Java에서 C ++로 전달 된 C ++의 Java 객체에서 동기화하는 방법은 무엇입니까?

분류에서Dev

일관성없는 구조로 SoapClient에서 PHP 개체를 "정규화"하는 방법은 무엇입니까?

분류에서Dev

직렬화 된 익명 개체를 다시 개체로 변환하는 방법은 무엇입니까?

분류에서Dev

이전에 직렬화 된이 객체를로드 할 수없는 이유는 무엇입니까?

분류에서Dev

직렬화 된 데이터로 구성된 배열을 표시하는 방법은 무엇입니까?

분류에서Dev

Haskell에서 매개 변수화 된 유형을 JSON으로 직렬화하는 방법은 무엇입니까?

분류에서Dev

serde를 사용하여 JSON 배열을 구조체로 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

200 대의 영국 휴대폰을 동시에 호출하고 녹음 된 메시지를 전달하는 방법은 무엇입니까?

분류에서Dev

시간대를 유지하면서 시간 객체를 직렬화하는 방법은 무엇입니까?

분류에서Dev

C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

분류에서Dev

최적화 된 매개 변수를 light gbm에 목록으로 전달하는 방법은 무엇입니까?

분류에서Dev

Twilio에서 응답 된 전화와받지 않은 전화를 구별하는 방법은 무엇입니까?

분류에서Dev

두 개의 브리지 된 MQTT 브로커간에 조건부로 메시지를 전달하는 방법은 무엇입니까?

분류에서Dev

C # 중첩 된 JSON의 일부를 개체 속성에 저장하지만 역 직렬화하지 않는 방법은 무엇입니까?

분류에서Dev

GET을 사용하여 암호화 된 메시지를 브라우저에 전달하는 방법은 무엇입니까?

분류에서Dev

C ++에서 참조로 구조체를 전달하는 방법은 무엇입니까?

분류에서Dev

XML 역 직렬화 중에 잘못된 열거 형 값을 무시하는 방법은 무엇입니까?

분류에서Dev

멤버가 직접 직렬화 할 수 없지만 str () 표현이있는 객체를 직렬화하는 방법은 무엇입니까?

분류에서Dev

Serilog에서 객체를 문자열로 직렬화하는 방법은 무엇입니까?

분류에서Dev

지역화 된 소수 구분 기호를 사용하여 JSP에서 액션으로 소수 값을 전달하는 방법은 무엇입니까?

분류에서Dev

직렬 데이터를 여러 변수 목록에 할당하고 Python에서 지정된 기간 동안 평균화하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    메시지 큐에서 여러 구조체를 역 직렬화 할 때 "boost :: archive :: archive_exception"을 피하는 방법은 무엇입니까?

  2. 2

    cpp에서 msg-pack으로 중첩 된 메시지를 직렬화하는 방법은 무엇입니까?

  3. 3

    C #에서 파생 된 개체를이 XML로 직렬화하는 방법은 무엇입니까?

  4. 4

    XML 직렬화 된 메시지에서 NodaTime 엔티티를 허용하도록 NServiceBus를 구성하는 가장 쉬운 방법은 무엇입니까?

  5. 5

    구조체에서 세분화 된 메서드를 사용하는 방법은 무엇입니까?

  6. 6

    Java에서 직렬화 및 직렬화 해제 후 참조를 유지하는 방법은 무엇입니까?

  7. 7

    상속 된 비 일시적 필드를 직렬화 할 수없는 방법은 무엇입니까?

  8. 8

    Alpine Linux 3.8에 Chromium 마스킹 된 패키지를 설치하는 방법은 무엇입니까?

  9. 9

    Java에서 C ++로 전달 된 C ++의 Java 객체에서 동기화하는 방법은 무엇입니까?

  10. 10

    일관성없는 구조로 SoapClient에서 PHP 개체를 "정규화"하는 방법은 무엇입니까?

  11. 11

    직렬화 된 익명 개체를 다시 개체로 변환하는 방법은 무엇입니까?

  12. 12

    이전에 직렬화 된이 객체를로드 할 수없는 이유는 무엇입니까?

  13. 13

    직렬화 된 데이터로 구성된 배열을 표시하는 방법은 무엇입니까?

  14. 14

    Haskell에서 매개 변수화 된 유형을 JSON으로 직렬화하는 방법은 무엇입니까?

  15. 15

    serde를 사용하여 JSON 배열을 구조체로 역 직렬화하는 방법은 무엇입니까?

  16. 16

    200 대의 영국 휴대폰을 동시에 호출하고 녹음 된 메시지를 전달하는 방법은 무엇입니까?

  17. 17

    시간대를 유지하면서 시간 객체를 직렬화하는 방법은 무엇입니까?

  18. 18

    C #에서 역 직렬화하는 동안 JSON 문자열에없는 속성의 초기화를 방지하는 방법은 무엇입니까?

  19. 19

    최적화 된 매개 변수를 light gbm에 목록으로 전달하는 방법은 무엇입니까?

  20. 20

    Twilio에서 응답 된 전화와받지 않은 전화를 구별하는 방법은 무엇입니까?

  21. 21

    두 개의 브리지 된 MQTT 브로커간에 조건부로 메시지를 전달하는 방법은 무엇입니까?

  22. 22

    C # 중첩 된 JSON의 일부를 개체 속성에 저장하지만 역 직렬화하지 않는 방법은 무엇입니까?

  23. 23

    GET을 사용하여 암호화 된 메시지를 브라우저에 전달하는 방법은 무엇입니까?

  24. 24

    C ++에서 참조로 구조체를 전달하는 방법은 무엇입니까?

  25. 25

    XML 역 직렬화 중에 잘못된 열거 형 값을 무시하는 방법은 무엇입니까?

  26. 26

    멤버가 직접 직렬화 할 수 없지만 str () 표현이있는 객체를 직렬화하는 방법은 무엇입니까?

  27. 27

    Serilog에서 객체를 문자열로 직렬화하는 방법은 무엇입니까?

  28. 28

    지역화 된 소수 구분 기호를 사용하여 JSP에서 액션으로 소수 값을 전달하는 방법은 무엇입니까?

  29. 29

    직렬 데이터를 여러 변수 목록에 할당하고 Python에서 지정된 기간 동안 평균화하는 방법은 무엇입니까?

뜨겁다태그

보관