C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[10013] Re:스트럭처 받을때 주의해야할것이 뭐가 있나요?
최보현.U&I [uriduri] 1201 읽음    2001-08-17 17:51
유엔아이 현입니다 ...

하하 역시 개박살... 허접한 넘입니다.
주의 할점은요~~

일단 스트럭쳐 By 스트럭쳐로 통신할때 가장주의 할점은 ...
각 머신의 패키징 기법이 어떻게 다른가 입니다 ...
스트럭처가 패키징을 할때

16 bit 컴파일러의 경우 2 Byte 패키징이
32 bit 컴파일러의 경우 4 Byte 패키징이
64 bit 컴파일러의 경우 8 Byte 패키징이 가장일반적이지만

트이한 기종(컴파일러) 의 경우 무조건 2 바이트로 되는 경우도 있으며
또는 무조건 1 바이트로 되는경우 무조건 4 바이트로 되는 경우가 있습니다.

2번째로 또 주의 해야 할점은
데이타 얼라이먼트 기법이 어떻게 다른가가 중요 합니다.

Intel 계열의 x86 계열은 역순으로 되어 있고요
원칩이나 리스크칩의 경우는 정순으로 데이타 얼라이 먼트가 이루어 집니다.

이두가지는 바이러리 통신의 가장 중요한 요소 입니다 ...
특이나 이기종간에 통신을 한다면 더욱이더~~~~

첫번재 데이타 패키징의 문제는 빌더나 비주얼씨 같은 경우 특정 스트럭처에대해
데이타 패키징을 다르게 다룰수 있는 방법을 제시 합니다 ...
방법은 #progma pack 라는 전처리 지시자 컴파일러의 옵션을 잡아 줄수 있구요 ( 자세한건 메뉴얼 참조 )

두번째 문제인 데이타 얼라이 먼트의 문제는 해결 방법이 없음으로 데이타를 받은후
데이타의 순서를 직접 마추어 주어야 합니다.

그럼 도움 되셨길......

음 그리고 질문에 대한 직접적인 내용으로 ...

이렇게 해보십시요

받은 데이타의 포인터를

일단 구분자를 위한 간단한 스트럭처를 하나 구성하시고 또, 실제 데이타의 포인터를 구성하신다음

데이타를 받으면 일단 간단한 구분자를 위한 스트럭처 포인터에 대입 하여 데이타를 구분한다음

그에 알맞은 데이타 스트럭처의 포인터 다시 대입하여

그 스트럭처 포인터를 사용하는게 가장 좋을듯 하군요~`

그럼

수야 님이 쓰신 글 :
: 소켓 프로그래밍을 하고 있는데요...
:
: recv할때요..
:
: 같은 타입으로 받아줘야된다고 들었는데
:
: 굳이 그러지 않아도 되더군요..
:
: 처음에 구분자를 둬서 1바이트 즉 하나의 int 값만 읽어서
:
: 무언지 구분한뒤 대기중인 바이트를 해당 패킷으로 받는다고는 들었는데
:
: 그렇게 받으면 스트럭처가 깨지더군요
:
: 그래서 사용한 방법이 char *buf[xx];
:
: 즉 캐릭터 포인터 배열인데요..
:
: 이렇게 하면 스트럭처의 값이 들어오긴 하더군요...
:
: 가장 정상적이고 좋은 방법이 무언지 좀 알려주셨으면 합니다.

+ -

관련 글 리스트
10001 스트럭처 받을때 주의해야할것이 뭐가 있나요? 수야 810 2001/08/17
10013     Re:스트럭처 받을때 주의해야할것이 뭐가 있나요? 최보현.U&I 1201 2001/08/17
10018         Re:Re:스트럭처 받을때 주의해야할것이 뭐가 있나요? 개박살.U&I 1047 2001/08/17
10011     Re:스트럭처 받을때 주의해야할것이 뭐가 있나요? 개박살.U&I 890 2001/08/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.