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
[61374] Re:소켓 구조체 통신
금목암[손효철] [iconms1] 1812 읽음    2010-06-04 09:17
ㅋㅋ 님이 쓰신 글 :
: 서버..
: typedef struct        
: {
:      AnsiString a;
:      AnsiString b;
: }TExample;           // 구조체 정의
:
: TExample Ex;
: Ex.a = "aaaa";
: Ex.b = "bbbb";       
: Cnt = sizeof(TEx)+1; 
: Buff = new BYTE[Cnt];  

: // Buff에 넣어준다..  Buff[0]은 명령어...
: CopyMemory(&Buff[1], &Ex, Cnt);   
:
: 그리고 어쩌구, 저쩌구.. 보냄...(SendBuf() 함수 이용)
: //---------------------------------------------------------------
: 클라이언트...
: 어쩌구 저쩌구 받음... ( ReceiveBuf() 함수 이용)
:
: Cnt = sizeof(TEx) + 1;    
: CopyMemory(&Ex, &Data[1], Cnt);     // 구조체에... 다시 메모리 복사...
:
: if(Ex.a.Length() > 0)                            // "" <--- 구조체에 빈 문자열이 복사돼네요..
:          ListBox1->Items->Add(Ex.a);
: //---------------------------------------------------------------
:
: 간략하게.. 소스를 요약해 봤습니다...
:
: 제가 궁금한 건... 받는 쪽에서 보내는 쪽 데이터를 확실하게 다 받습니다...
:
: 근데... CopyMemory(&Ex, &Data[1], Cnt);     이 부분에서... 구조체 변수 a 와 b에
:
: 자꾸만 "" <--- 이런식으로... 빈 문자열이 찍히 더군요...
:
: 해결책이 없을 까요?? 
:
: 문자열부분을 char형 배열로 바꿔서 통신해야 돼는 건가요??
:
: 아니면.. ReceiveText() <-- 이 함수를 이용해야 하는 건가요??
:
: 근데.. 함수를 바꾸기에는 구조적으로 좀 문제가 있습니다..
:
: 왜 그런지 당췌 이유를 알수가 없더군요...
:
: 정말 급합니다...
==================================================

구조체에 ansistring 으로 되어있지만 만능은 아닙니다.
제가 보기에는 읽어낸 문자열의 길이만큼 쓰기전에 구조체를 생성하여 (이때 읽어낸 문자열 길이만큼 생성)
하여 여기다 옮기셔야 할것 같네요
제일 좋은건 char 를  쓸 문자길이 만큼  생성하여 이걸 쓰는겁니다

+ -

관련 글 리스트
61353 소켓 구조체 통신 ㅋㅋ 980 2010/06/03
61375     Re:소켓 구조체 통신 송신영 1519 2010/06/04
61374     Re:소켓 구조체 통신 금목암[손효철] 1812 2010/06/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.