네트워크 전송을 위해 C로 구조체를 정의하고 싶습니다. 예를 들어, 가변 길이의 동물 이름을 포함하는 Animal 구조체를 전송하려고합니다.C에서 네트워크 통신을위한 구조 정의
AFAIK, 편도 구조체에 using a predefined length of char array
또는 using a buffer
, 우리는 버퍼 을 (분석 할 수 예를 들면, 처음 4 바이트 동물 이름 동물 이름 다음의 길이, 및 다른 필드 '길이 및 다른 아르
struct Animal
{
char name[128];
int age;
}
또는 :
struct Animal
{
int bufferLen;
char* pBuffer;
}
내 질문 : m 된 필드 '값), 후자의 방법의 장점은 코드 다음을 나타내는대로, 변수 이름 길이를 허용하는 것이다 y가 올바른 방향으로 접근합니까? 즉, 구조체를 전달하는 표준 방법이 있으며 더 좋은 방법이 있습니까?
나의 두 번째 질문은 다음과 같습니다. 패닝에주의해야합니까? 즉 #pragma pack(push/pop, n)
을 사용합니까?
미리 감사드립니다. 당신이 고정 된 길이를 사용하는 경우
C 또는 C++의 예제 직렬화 코드를 확인 하시겠습니까? 그것은 문제가된다. –
두 가지 방법을 모두 사용하여 작동하게 할 수 있으며 둘 다 잘못 사용할 수 없습니다. pack pragma와 관련하여 다시 팩을 사용하거나 사용하지 않고 코드를 작성할 수 있습니다. – sashang
일반적으로 원시 데이터 구조를 직접 전송하는 것은 좋지 않습니다. JSON, XML, XDR 등과 같은 직렬화 형식을 사용해야합니다. – Barmar