AddressOverride
AddressOverride 는, 네트워크 상의 다른 세션의 호스트가 되는지, 또는 그 세션에 접속하기 위해서, Microsoft® DirectPlay® 에 프로그램적으로 주소를 제공하는 방법을 나타낸다. 이외에는, DirectPlay 로 표준의 다이알로그 박스를 표시해, 사용자에 접속 설정을 입력받는 방법이 있다. 대부분의 게임에서는, 독자적인 사용자 인터페이스를 제공하기 위해서, 주소를 직접 설정한다.
패스
소스 파일 :(SDK 루트) \Samples\C++\DirectPlay\AddressOverride
실행 가능 파일 :(SDK 루트) \Samples\C++\DirectPlay\Bin
사용자가이드
AddressOverride 샘플에서는, 주소의 파라미터를 선택하는 다이알로그 박스가 표시된다. 이 다이알로그 박스를 사용하려면 , 다음의 순서에 따른다.
- player의 이름과 세션을 입력한다.
- 세션의 호스트가 되는 경우는,[Host Session] 체크 박스를 온으로 한다.
- [Service Provider] 의 일람으로부터 서비스 프로바이더를 선택한다.
- [Adapter] 의 일람으로부터 어댑터를 선택한다.
-
이후의 순서는, 선택하는 서비스 프로바이더에 따라서 다르다.
- 전송 제어 프로토콜/인터넷 프로토콜 (TCP/IP) 서비스 프로바이더를 선택하는 경우
- 세션에 참가하려면 , 해당의 편집 박스에 인터넷 프로토콜 (IP) 주소와 포트를 입력해, 특정의 호스트를 선택한다. [IP address] 및 [Port] 체크 박스를 오프로 해 두면 로컬 네트워크로 이용 가능한 호스트를 검색할 수 있다.
- 세션의 호스트가 되려면 , 포트를 지정한다. [Port] 체크 박스를 오프로 해 두면 포트는 자동적으로 선택된다.
- 모뎀 서비스 프로바이더를 선택하는 경우, 전화번호를 입력한다.
- Internetwork Packet Exchange (IPX) 서비스 프로바이더를 선택하는 경우, 포트를 입력한다.
- 시리얼 서비스 프로바이더를 선택하는 경우, 시리얼 설정을 사용자에 입력받기 위한 DirectPlay 의 디폴트 다이알로그 박스가 표시된다.
[Address Override] 다이알로그 박스로 필요한 정보를 설정하면[OK] 를 클릭해 게임을 시작 하는지, 게임에 참가한다. 이 게임은, SimplePeer 샘플에 유사하고 있다. 더 자세한 정보는,SimplePeer 의 「사용자가이드」를 참조할것.
프로그래밍 정보
AddressOverride 샘플은, SimplePeer 샘플과 매우 비슷하다. 더 자세한 정보는, SimplePeer 샘플의 「프로그래밍 정보」를 참조할것. AddressOverride 로 다른 것은, 디폴트의 주소 선택 다이알로그 박스를 표시하는 것이 아니라, 프로그램적으로 주소를 지정하는 것이다.
다음의 일람은, AddressOverride 샘플이 동작하는 구조의 개요를 나타내고 있다. [OK] 를 클릭 하면, 다음의 처리가 실행된다.
- [Host Session] 체크 박스를 통해서, 사용자는 세션의 호스트가 되고 싶은 것인지, 또는 세션에 참가하고 싶은 것인지를 판단한다.
- [Service Provider] 의 일람으로부터 서비스 프로바이더를 판단해, 적절한 글로벌 일의 식별자 (GUID)를 선택한다.
- pDeviceAddress 라는 이름의 IDirectPlay8Address 개체를 생성 한다.
- 그 개체의 IDirectPlay8Address::SetSP 메서드를 호출해, 서비스 프로바이더를 지정한다.
- 사용자가 세션의 호스트가 되는 경우,pHostAddress 라는 이름의 IDirectPlay8Address 개체를 생성 한다. 다음에, 그 개체의 IDirectPlay8Address::SetSP 메서드를 호출해, 서비스 프로바이더를 지정한다.
- 어댑터가 선택되었을 경우,pDeviceAddress 개체의 IDirectPlay8Address::SetDevice 를 호출해, 어댑터를 지정한다.
다음에,IDirectPlay8Address::AddComponent 를 호출해, 주소 개체의 초기화를 완료한다. 그 자세한 것은, 선택된 서비스 프로바이더와 사용자가 세션에 참가하고 있는지 호스트가 되고 있는지에 따라서 다르다.
- TCP/IP 서비스 프로바이더가 선택되어
- 사용자가 세션의호스트가 되고 있는경우, 사용자는 포트를 지정할 수 있다.
- 포트가 지정되었을 경우,pwszName 파라미터에 DPNA_KEY_PORT 를 설정해,pDeviceAddress 개체의 IDirectPlay8Address::AddComponent 를 호출해, 사용자의 포트를 주소에 추가한다.
- 사용자가 세션에참가하고 있는경우, 사용자는 호스트의 IP 주소와 포트를 지정할 수 있다.
- 호스트의 IP 주소를 지정했을 경우,pwszName 파라미터에 DPNA_KEY_HOSTNAME 를 설정해,pHostAddress 개체의 IDirectPlay8Address::AddComponent 를 호출해, 호스트의 IP 주소를 주소 개체에 추가한다.
- 포트를 지정했을 경우,pwszName 파라미터에 DPNA_KEY_PORT 를 설정해,pHostAddress 개체의 IDirectPlay8Address::AddComponent 메서드를 호출해, 호스트의 포트를 주소에 추가한다.
- IPX 서비스 프로바이더가 선택되어
- 사용자가 세션의호스트가 되고 있는경우, 사용자는 포트를 지정할 필요가 있다. pwszName 파라미터에 DPNA_KEY_PORT 를 설정해,pDeviceAddress 개체의 IDirectPlay8Address::AddComponent 메서드를 호출해, 사용자의 포트를 주소에 추가한다.
- 사용자가 세션에참가하고 있는경우, 사용자는 포트를 지정할 필요가 있다. pwszName 파라미터에 DPNA_KEY_PORT 를 설정해,pHostAddress 개체의 IDirectPlay8Address::AddComponent 메서드를 호출해, 사용자의 포트를 주소에 추가한다.
- 모뎀 서비스 프로바이더가 선택되어 사용자가 세션에참가하고 있는경우, 사용자는 전화번호를 지정할 필요가 있다. pwszName 파라미터에 DPNA_KEY_PHONENUMBER 를 설정해,pHostAddress 개체의 IDirectPlay8Address::AddComponent 메서드를 호출해, 전화번호를 주소에 추가한다.
SimplePeer 샘플과 거의 똑같이, 장치 및 호스트의 주소 개체를 사용해, 세션에 접속한다.