|
Lyn님 감사합니다.
사이즈 부분 처리를 수정하여 데이터 수신은 정상적으로 됩니다.
그런데 통신중에 창을 이동할려고 하면 멈춤현상이 발생합니다..
인터넷을 찾아서 Freeze 처리도 해봤는데 안되더군요..
혹시 멈춤현상 해결방안 아시는 고수님들 답변 부탁드립니다.
Lyn 님이 쓰신 글 :
: TBytes <-> 변수 의 변환은
:
: RawToBytes, BytesToRaw 를 사용하세요
:
: 그리고 rcv_size 사이즈 확인 해 보시구요...
:
:
: 김명호 님이 쓰신 글 :
: : 안녕하세요..빌도 초보자입니다.
: : 제가 사용하는 환경은 빌더 2009입니다.
: :
: : 아래의 소스를 적용하면 패킷이 읽혀지지 않습니다.
: : 또한, rcv_size를 강제로 32로 하면 데이터 수신은 되는데 CmdProcess()
: : 를 수행하면 몇초후에 프로그램이 멈추는 현상이 발생합니다..
: : 오늘 오후내내 고생하는데 해결이 안되네요..
: : 고수님들의 조언 부탁드립니다.
: :
: :
: : ------------------------ 아 래---------------------------------------
: : void CmdProcess(byte *data, int size); // 수신 데이터 처리 모듈
: :
: : void __fastcall TfrmMain::IdTCPServer1Execute(TIdContext *AContext)
: : {
: : TByteDynArray bdaRx;
: : byte rcv_data[1024];
: : int rcv_size;
: :
: : rcv_size = AContext->Connection->IOHandler->ReadSmallInt(false);
: : if(rcv_size > 0)
: : AContext->Connection->Socket->ReadBytes(bdaRx, rcv_size, false);
: :
: : for(int idx = 0; idx < rcv_size; idx++)
: : rcv_data[idx] = bdaRx[idx];
: :
: : CmdProcess(rcv_data, rcv_size);
: : }
|