솔라리스와 리눅스의 네트워 통신에서의 endian 문제
글쓴이: ham / 작성시간: 화, 2004/01/06 - 8:33오후
솔라리스와 리눅스의 통신프로그램을 만들고 있습니다.
다음과 같은 struct을 통해서 서버와 클라이언트는 통신을 하고 있구요
struct TEST_DATA
{
int code;
int id;
char name[20];
};
클라이언트 main코드는 다음과 같구요..
struct TEST_DATA data;
data.code=htonl(20);
data.id = htonl(-1);
data.name="hem hem hem";
그리고 sendto 로 데이타 struct을 보냅니다.
그런데 문제는 컴파일할때..
data.id = htonl(-1); 에서 에러가 남니다.
htonl 이 unsigned만 지원한다고 man페이지에 나옵다.
반드시 "-1"을 보내야 되는 상황인데.. 어떻게 해야 되나여.. ??
결국 struct TEST_DATA의 모든 변수을 char [] 형 변수로 바꾸어서
통신을 해야 하나여?
또하나는 여러분은 endian 처리를 보통 어떻게 처리하나여?
그냥.. char 스트림 형태로 보내시나여?
htonl,ntohl을 사용하시나여?
아님 다른 방법으로 하시나여?
좋은 하루 보내세여
Forums:
제 경우는...
죄송합니다. 졸면서 글을 썼더니 오류가 있었습니다. :shock:
struct가 아니라 union입니다.
저는 다음과 같은 union를 잡아서 사용합니다.
그리고 전송하기 전에 위의 structure를 이용해서 byte swapping을 합니다.
To be a rich
댓글 달기