power PC <-> Intel 간 struct 구조체 socket 전송

scoh98의 이미지

struct ipc_t {
 int x;
 int y;
 int z;
 char data[100];
}

을 char buff[1024] 에 통채로 담아서 big endian 인 power PC 와 little endian 인 Intel PC 간에 socket 전송을 하려는데 간단한 방법없나요?
매번 ipc.x = htonl(ipc.x); 이런거 해줘야 하나요? 좀 귀챦은데.....
근데 여기서 char data[100] 은 htons/htonl 이 적용되나요??
헤깔리네요.

정태영의 이미지

network byte 는 big endian 이 약속입니다 :)

귀찮더라도 서로 문제를 일으키지 않기 위해서라면 ...

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

익명 사용자의 이미지

scoh98 wrote:
매번 ipc.x = htonl(ipc.x); 이런거 해줘야 하나요? 좀 귀챦은데.....

네 매번 해 줘야 합니다.

scoh98 wrote:
근데 여기서 char data[100] 은 htons/htonl 이 적용되나요??

byte ordering은 2byte이상의 데이터 형에만 해당되는 내용입니다. 따라서 단순한 byte의 열은 상관 없습니다.
단지 data에 저장될 때 데이터 형이 적용되어 있다면 위와 마찬가지로 byte re-ordering을 해 주셔야 합니다.
익명 사용자의 이미지

위 손님의 의견에 동의합니다.

lovemyin의 이미지

제가 경험이 있어서 말씀드리는데요...
바이트 오더링은 매우 중요합니다.
실제 인텔끼리 통신을 구현할때도 확장성을 고려해 바이트 오더링은 꼭 해주셔야 됩니다.
귀찮으셔도 그냥 하세요...^^

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/