DirectPlay DirectPlay C++ 샘플 DataRelay   [목차열람] [주소복사] [슬롯비우기]
DataRelay
 
Microsoft DirectX 9.0

DataRelay


DataRelay 샘플은,SimplePeer 와 비슷하다. 다만, 다이알로그 박스의 사용자 인터페이스 (UI)로 지정한 옵션과 함께 데이터 패킷을 송신하는 점이 다르다.

패스

소스 파일 : (SDK 루트) \Samples\C++\DirectPlay\DataRelay

실행 가능 파일 :(SDK 루트) \Samples\C++\DirectPlay\Bin

사용자가이드

SimplePeer 로 설명한 순서에 따라, 세션의 호스트가 되는지, 세션에 접속한다. 메인 다이알로그 박스가 표시되면 타겟, 사이즈, 레이트, 타임 아웃의 각 값을 선택한다. 다음에,[Push to Send] 를 클릭한다. 이것에 의해, 지정된 사이즈와 레이트로, 데이터 패킷이 타겟으로 송신된다. [Connection Info] 박스를 사용해, 접속 정보를 주기적으로 수집하는 타겟을 지정한다.

  Internetwork Packet Exchange (IPX) 서비스 프로바이더를 선택했을 경우, Microsoft® DirectPlayreg; 에 주소의 검색을 실행시키려면 ,[use DPNSVR] 체크 박스를 온으로 한다.

프로그래밍 정보

DataRelay 샘플은, SimplePeer 와 매우 닮은 형식이다. 상세한 프로그래밍 정보에 대해서는, SimplePeer 샘플의 「프로그래밍 정보」를 참조할것.

[Push to Send] 를 클릭 하면, UI 로 지정한 밀리 세컨드 마다 사라지는 타이머가 생성 된다.

타이머가 사라지면 콜백 함수는 SendNetworkData 함수를 호출해, 다음의 처리를 실행한다.

  1. 애플리케이션 정의의 구조체를 생성 한다.
  2. 애플리케이션 워커 thread에 건네주는 GAMEMSG_DATA_NODE 를 생성 한다. 이 thread가 노드를 처리해, UI 를 갱신해 패킷이 송신된 것을 나타낸다.
  3. DPN_BUFFER_DESC 구조체에 정보가 저장 되어 위에서 생성 한 애플리케이션 정의의 구조체의 포인터에게 건네진다.
  4. IDirectPlay8Peer::SendTo 메서드가 불려 가DPN_BUFFER_DESC 구조체에게 건네진다.
  5. 이벤트 g_hDPDataAvailEvent 가 설정되어 처리할 수 있는 데이터가 있는 것을 워커 thread에게 전한다.

ProcessNetDataProc 함수는, g_hDPDataAvailEvent 이벤트를 받으면ProcessData 함수를 호출한다. 이 함수는, 다음의 처리를 실행한다.

  1. 크리티컬 섹션 g_csDataList 를 입력한다.
  2. 링크된 리스트를 모두 확인해, 각 노드를 처리한다.
  3. IDirectPlay8Peer::ReturnBuffer 를 호출해, DirectPlay 가 DPN_MSGID_RECEIVE 로 건네준 버퍼 스페이스를 릴리즈 할 수 있도록(듯이) 한다.

DirectPlayMessageHandler 함수는,DPN_MSGID_RECEIVE,DPN_MSGID_SEND_COMPLETE 등의 다른 종류의 메시지를 처리한다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP