22.메시지 송신하기

RMI Foo(int a,float b)가 선언되었다고 가정합시다.

RMI proxy가 Proud.CNetClient나 Proud.CNetServer에 등록됐으면, 메시지를 보내기 위해 Proxy의 RMI를 호출할 수 있습니다.

메시징 프로토콜은 Proud.RmiContext.ReliableSend 또는 Proud.RmiContext.UnreliableSend를 사용할 수 있습니다. 클라이언트-서버간 통신 및 P2P 통신 모두 사용 가능합니다. 메시징 프로토콜에 대해서는 protocol_overview를 참고하시기 바랍니다.

아래는 메시지를 송신하는 예입니다.

Proud::HostID oneHostID=...; // 1개의 송신 대상
int manyHostIDListCount=...;

// 서버에게 RMI를 보낸다.
myProxy.Foo(Proud::HostID_Server,Proud::RmiContext::ReliableSend,3,4);

// 1개의 송신 대상에게 RMI를 보낸다.
myProxy.Foo(oneHostID,Proud::RmiContext::UeliableSend,3,4);

송신 대상은 클라이언트의 Host ID나 서버의 Host ID(Proud.HostID_Server) 혹은 자기 자신을 넣을 수 있습니다. 또한, 송신 대상으로 P2P 그룹 ID를 넣으면 해당 P2P 그룹으로 multicast가 됩니다.

한번에 여러 대상에게 multicast를 할 수도 있습니다. 첫번째 파라메터로 HostID 대신 HostID 배열의 포인터와 HostID배열의 크기를 넣으면 됩니다. (아래 예)

// 송신 대상 배열
Proud::HostID sendTo[2];
sendTo[0] = ...;
sendTo[1] = ...;

// 여러 송신 대상에게 한번에 송신한다.
myProxy.Foo(sendTo, 2, Proud::RmiContext::ReliableSend, 3, 4);

이때 리스트에서 송신 대상이 중복될 경우 중복해서 보내지지 않고, 1회만 보내집니다. 리스트에는 1개 호스트 뿐만 아니라 P2P 그룹도 송신 대상으로 지정 가능합니다.

ProudNet은 다양한 메시지 송신 옵션을 제공합니다. 자세한 것은 Proud.RmiContext 도움말을 참고하십시오.