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
[23337] Re:[질문] 구조체를 함께 날려보낼 수 있는 방법은?
이명주 [kalli75] 965 읽음    2002-12-23 19:02
//클라이언트 -- 구조체 보내기
PMyRec rec = new TMyRec;
int leng = 0;
int idx = 0;

strcpy(rec->FName, "FileName뭘까요?");
leng += sizeof(rec->FName);

strcpy(rec->LName, "FileLength길이 ");
leng += sizeof(rec->LName);

byte * Buff = new byte[leng+3];
memcpy(Buff, "UID", 3); idx += 3;
memcpy(Buff+idx, rec, sizeof(*rec));
ClientSocket1->Socket->SendBuf(Buff, leng+3);
delete[] Buff;

//-->이렇게 바꾸세요.

시간한줌 님이 쓰신 글 :
: 안녕하세요~
:               시간한줌입니다.
: 아까 질문한것에 조금 서광이 비쳐서 다시 질문을 수정합니다.
:
: 소켓 통신으로 구조체를 받으려고 하는데 구조체를 여러개를 두려고 합니다. 그래서 앞에 구조체를 구분할 수 있는 해더 내용을 담았습니다.
:
:
: // 서버와 클라이언트의 해더파일 내용
: typedef struct MyRec
: {
:     char FName[255];
:     char LName[127];
: } TMyRec;
: typedef TMyRec* PMyRec;
: //---------------------------------------------------------------------------
:
: // 클라이언트
:     // 구조체 보내기
:     PMyRec rec = new TMyRec;
:     int leng=0;
:
:     strcpy(rec->FName,"FileName뭘까요?");
:     leng += sizeof(rec->FName);
:
:     strcpy(rec->LName, "FileLength길이 ");
:     leng += sizeof(rec->LName);
:
:     byte * Buff = new byte[leng+3];
:     strcpy(Buff, "UID");
:     strcat(Buff,(byte *)rec);// 여기서 문제가 난듯 하기두 하고요 ㅡㅡ;;;
:
:     ClientSocket1->Socket->SendBuf(Buff, leng+3);
:     delete [] Buff;
: //---------------------------------------------------------------------------
:
:
: //서버 부분
:     char * Buff = new char[3];
:     Memo1->Lines->Add("받은 버퍼 크기 : " + IntToStr(Socket->ReceiveLength()));
:
:     Socket->ReceiveBuf(Buff, 3);
:     AnsiString str = Buff;
:     delete [] Buff;
:     Memo1->Lines->Add("짤린 버퍼 크기 : " + IntToStr(Socket->ReceiveLength()));
:
:     if( str == "UID" )
:     {
:         PMyRec temp = new TMyRec;
:         memset(temp, 0x00, sizeof(temp));
:         Socket->ReceiveBuf(temp, Socket->ReceiveLength() );
:         Memo1->Lines->Add(temp->FName);
:         Memo1->Lines->Add(temp->LName);
:     }
: //---------------------------------------------------------------------------
:
: 이렇게 했더니~
:
: 받은 버퍼 크기 : 512
: 짤린 버퍼 크기 : 509
: FileName뭘까요?
:
: 받은 버퍼 크기 : 0
: 짤린 버퍼 크기 : 0
:
:
: 이런 결과가 나옵니다.
: 왜? 두번씩이나 읽고 첫번째 구조체 값인 FName만 제대로 읽는 거에요?
: 웅~ 이거땜에 오늘 하루종일 고생이네요~
: 좀 해결해 주세요~ ^^

+ -

관련 글 리스트
23333 [질문] 구조체를 함께 날려보낼 수 있는 방법은? 시간한줌 670 2002/12/23
23337     Re:[질문] 구조체를 함께 날려보낼 수 있는 방법은? 이명주 965 2002/12/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.