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

델파이 Q&A
Delphi Programming Q&A
[15373] Re:Array Of Record를 idTCP로 전송하려 합니다.
조대현.Clau [casanebula] 2069 읽음    2015-01-03 01:15
1. 구조체 한개는
TStream을 이용하면 아주 쉽습니다.
스트림에 쓰고 소켓으로 전달하면 됩니다.
바이트형식이라고 말씀하시는 형식으로 전달됩니다.

<예제>
var
  strm : TMemoryStream;
begin
  strm.Write(myrecTemp, Sizeof(TMyREC) );
  idtcpclient1.IOHandler.Write(strm); // 설명용 코드로 실제 구현되지 않습니다.
end;

만약 Array of TMyREC 처럼
구조체 배열인경우는 for문 돌리면서 각 배열의 구조체를 보내시면 됩니다.

-------------------------------------------

2. 자바쪽이 아주 큰 문제입니다.
C나 델파이등은 구조체 그대로 소켓에서 받으면 끝나는데
자바에는 구조체가 없으므로 직접 수신받은 내용을 쪼게서 변수에 직접 대입해야 합니다.

주의해야 할점이 또 있습니다.
1) 델파이와 자바의 int, float등의 사이즈는 다를 수 있다.
2) 자바쪽 CPU의 종류에 따라 리틀엔디안-빅엔디안 차이로 각 바이트를 읽는 순서를 맞추어야 합니다.
3) 스트링의 경우 인코딩 처리가 필요합니다.

-------------------------------------------

3. 그래서 속도가 민감하지 않다면 그냥 ASCII(문자열)로 던지고 자바쪽에서 직접 컨버팅하는게 가장 쉽습니다.

<델파이>
idtcpclient1.iohandler.writeln(Col1);
idtcpclient1.iohandler.writeln(Col1);
idtcpclient1.iohandler.writeln(IntToStr(Col3));

<자바> // 설명용 코드로 작동하지 않습니다.
scol1 = sock.readstring("\r\n");
scol2 = sock.readstring("\r\n");
scol3 = sock.readstring("\r\n").toInteger();

첫눈 님이 쓰신 글 :
: 질문을 너무 자주 하는 듯 하여 죄송합니다.
:
: type
:    TMyREC = Record
:      Col1 : string[20];
:      Col2  : string[20];
:      Col3  : Integer;  
: end;
:
:  var
:    MyREC : Array of TMyREC;
:  begin
: ....
: ....
: End;
:
: 이런 형식의 Array of Record를 idTCP로 전송하여 JAVA에서 수신하여
:
: Col1    Col2    Col3
: -----------------
: aaa    bbb     1000
: ccc    ddd     2000
: eee    ffff        3000
: -----------------
:
: 이렇게 보여주려 하는데요.
:
: 1.
: Array of Reocrd를 어떻게 Byte형식으로 바꾸어야 할지
:
: 2.
: Byte형식의 데이터를 JAVA에서 어떻게 레코드 배열 형식으로 바꾸어야 할지 모릅니다.
:
: 도움 부탁드립니다.
:
:

+ -

관련 글 리스트
15369 Array Of Record를 idTCP로 전송하려 합니다. 첫눈 1876 2015/01/01
15373     Re:Array Of Record를 idTCP로 전송하려 합니다. 조대현.Clau 2069 2015/01/03
15374         Re:조대현님 답변 감사합니다. 첫눈 1760 2015/01/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.