이제 P2P 메시지 보내기를 해 봅시다.
코드 [C++]
c->SendUsermessage(G, RmiContext::ReliableSend, data, length);
코드 [C#]
SendUserMessage( , . , );.
이렇게 클라이언트에서 P2P 통신이 가능하다는 이벤트를 받으면, 클라이언트는 즉시 상대방에게 P2P로 메시지를 보낼 수 있습니다. SendUserMessage()나 RMI를 쓰면 됩니다. SendUserMessage()나 RMI를 호출할 때 수신 대상으로 다른 호스트의 HostID를 넣으면 P2P로 전송됩니다. 첫 번째 매개변수로 G를 넣으면 G 안에 있는 모든 호스트에게 멀티캐스트를 할 수 있습니다. P2P로 RMI를 주고받는 과정은 뒤에서 설명하겠습니다.
이번에는 P2P 그룹에 멤버 추가하기/삭제하기/파괴하기를 알아봅시다. 이미 만들어진 P2P 그룹에 JoinP2PGroup을 호출해서 더 많은 클라이언트를 기존 P2P 그룹에 넣을 수 있습니다. 그러면 새로 추가된 호스트와 기존에 있던 호스트는 신규로 들어오는 것에 대한 OnP2PMemberJoin() 이벤트를 받습니다.
P2P 그룹에서 호스트를 제거하려면 NetServer.LeaveP2PGroup()을 호출하고, P2P 그룹 자체를 파괴하려면 DestroyP2PGroup()을 호출하면 됩니다.
클라이언트는 다른 클라이언트가 P2P 그룹에서 쫓겨날 때 OnP2PMemberLeave()를 받게 되며, 여기서 “누가 나갔는지” 알게 됩니다. 마찬가지로 클라이언트 자신이 쫓겨날 때도 같은 함수가 콜백됩니다.