Q&A

  • Indy 를 사용할때 OnReceive 같은 이벤트형식은 어떻게 ?
안녕하세요.
Socket 통신은 주로 VC 를 쓰다가 Indy 는 처음 써봅니다.
내용은 이렇습니다.
Client 에서 Server 에 접속한 후 Server 에서 불규칙하게 보내는 데이타를 Client 에서 받아서 처리해야 하는 상황입니다. 언제 Server 에서 데이타가 보내질지는 모릅니다. 이럴때 데이타가 도착했을때 발생하는 이벤트를 처리하고자 찾아보니 Indy Client 에서는 어떤것이 그런 역할을 하는지 모르겠습니다.
몇몇 다른 샘플에 보면 주기적으로 버퍼에 데이타가 들어있는지 확인하는 방법을 사용하는 것은 봤습니다.
Windows API 에 보면 WSAEventSelect 가 있는데 이것이 Indy 에는 적용이 안되어 있는 것인지요 ?
1  COMMENTS
  • Profile
    바다를향해 2002.09.07 04:01
    데이터를 받는 쓰레드를 구현을 해줘야 합니다.
    데이터를 받아서 처리를 해야 하는 프로시져를 만든후에
    쓰레드의 Execute 에서 Syncronize로 만든 프로시져를 호출 하구요....
    물론 데이터를 받을 버퍼두 쓰레드에서 정의가 되어 있어야 겠죠....
    Execute에서, 만들어놓은 버퍼에다가 소켓에서 받은 데이터를 집어 넣구요..
    그담에 실제 처리하는 프로시져에서 만들어 놓은 버퍼에 있는 데이터를
    처리 하는 거죠....
    글로만 쓸려니깐 복잡해 보이는거 같은데요...

    type
      TRecThread = Class(TThread);
      Private
        Buffer: PChar;  <--- 요 버퍼의 타입은 패킷의 타입을 쓰시면 됩니다.
        procedure RecProc;  <---- 데이터를 받아서 처리 하는 프로시져
      Public
        procedure Execute; override;  <--- while문으로 무한루프를 돌면서
                                                           Syncronize(RecProc); 이런식으로
                                                           프로시져를 호출 합니다.
      end;

    대략 쓰레드의 형태는 위와같이 되겠죠....

    Indy를 이용해서 클라이언트에서 데이터를 받는 소스는 많으니까여....
    함 찾아 보시면...금방 찾을수 있을거에여....이곳 자료실에두 Indy로 검색
    해보시면 많은 자료들이 나올겁니다...그런 소스를 참고 하세요....

    그럼 즐코....^^;;;