|
답변 주신 회원님들 감사드립니다.
Indy는 앞으로 진행과정에서도 문제가 될거 같아서 Client는 포기하고 Server 만 사용해야 겠습니다.
예전에 Indy TCP Server는 타이머로 동작시켜도 문제없이 잘 사용했는데 Client는 사용하는데
고생하게 되네요... TClientSocket 인가요?? 6.0 버전에서 사용하던거 인스톨해서 사용하니
너무 편하게 잘되네요..그냥 이 콤포넌트 사용할려고 합니다.
Julien 님이 쓰신 글 :
: READ 하는 부분을 Execute 로 옮기고,
: Sync 함수는 화면갱신에만 사용하세요.
:
:
: 김명호 님이 쓰신 글 :
: : 아래의 코드는 쓰레드 부분에 작성된 소스입니다.
: : 우선 TCP 서버와 연결은 잘되며 데이터 전송도 잘됩니다.
: : 그런데 TCP 서버에서 데이터를 전송하면 인디소켓에서 수신이 안되는 상황에서
: : Disconnect를 수행하면 그 순간에 데이터가 들어옵니다..
: : 몇일째 이래저래 고쳐보고 타이머를 써보아도 현상은 동일하네요..
: : 이러한 현상 아시는분 답변부탁드립니다..
: :
: : ========================= 아 래 =================================
: : void __fastcall ClntThd::UpdateListbox()
: : {
: : TByteDynArray Rx_Data;
: : char rcv_data[128];
: : int size;
: :
: : Form2->Caption = qq;
: : size = Form2->IdTCPClient1->Socket->InputBuffer->Size;
: : if(size <= 0) {
: : return;
: : }
: :
: : Form2->IdTCPClient1->Socket->ReadBytes(Rx_Data, size, false);
: : for(int idx=0; idx<size; idx++)
: : rcv_data[idx] = Rx_Data[idx];
: :
: : Form2->Edit1->Text = rcv_data;
: : }
: :
: : __fastcall ClntThd::ClntThd(void)
: : : TThread(false)
: : {
: : }
: :
: : //---------------------------------------------------------------------------
: : void __fastcall ClntThd::Execute()
: : {
: : //---- Place thread code here ----
: : qq = 0;
: : while(!Terminated) {
: : qq++;
: : Synchronize(&UpdateListbox);
: : }
: : }
|