本文整理汇总了C++中raknet::RakPeerInterface::GetSystemAddressFromGuid方法的典型用法代码示例。如果您正苦于以下问题:C++ RakPeerInterface::GetSystemAddressFromGuid方法的具体用法?C++ RakPeerInterface::GetSystemAddressFromGuid怎么用?C++ RakPeerInterface::GetSystemAddressFromGuid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类raknet::RakPeerInterface
的用法示例。
在下文中一共展示了RakPeerInterface::GetSystemAddressFromGuid方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(void)
{
char ch;
RakNet::SocketDescriptor sd;
sd.socketFamily=AF_INET; // Only IPV4 supports broadcast on 255.255.255.255
char ip[128];
static const int SERVER_PORT=12345;
// ReplicaManager3 requires NetworkIDManager to lookup pointers from numbers.
NetworkIDManager networkIdManager;
// Each application has one instance of RakPeerInterface
RakNet::RakPeerInterface *rakPeer;
// The system that performs most of our functionality for this demo
ReplicaManager3Sample replicaManager;
printf("Demonstration of ReplicaManager3.\n");
printf("1. Demonstrates creating objects created by the server and client.\n");
printf("2. Demonstrates automatic serialization data members\n");
printf("Difficulty: Intermediate\n\n");
printf("Start as (c)lient, (s)erver, (p)eer? ");
ch=getche();
rakPeer = RakNet::RakPeerInterface::GetInstance();
if (ch=='c' || ch=='C')
{
topology=CLIENT;
sd.port=0;
}
else if (ch=='s' || ch=='S')
{
topology=SERVER;
sd.port=SERVER_PORT;
}
else
{
topology=P2P;
sd.port=SERVER_PORT;
while (IRNS2_Berkley::IsPortInUse(sd.port,sd.hostAddress,sd.socketFamily, SOCK_DGRAM)==true)
sd.port++;
}
// Start RakNet, up to 32 connections if the server
rakPeer->Startup(32,&sd,1);
rakPeer->AttachPlugin(&replicaManager);
replicaManager.SetNetworkIDManager(&networkIdManager);
rakPeer->SetMaximumIncomingConnections(32);
printf("\nMy GUID is %s\n", rakPeer->GetMyGUID().ToString());
printf("\n");
if (topology==CLIENT)
{
printf("Enter server IP: ");
Gets(ip, sizeof(ip));
if (ip[0]==0)
strcpy(ip, "127.0.0.1");
rakPeer->Connect(ip,SERVER_PORT,0,0,0);
printf("Connecting...\n");
}
printf("Commands:\n(Q)uit\n'C'reate objects\n'R'andomly change variables in my objects\n'D'estroy my objects\n");
// Enter infinite loop to run the system
RakNet::Packet *packet;
bool quit=false;
while (!quit)
{
for (packet = rakPeer->Receive(); packet; rakPeer->DeallocatePacket(packet), packet = rakPeer->Receive())
{
switch (packet->data[0])
{
case ID_CONNECTION_ATTEMPT_FAILED:
printf("ID_CONNECTION_ATTEMPT_FAILED\n");
quit=true;
break;
case ID_NO_FREE_INCOMING_CONNECTIONS:
printf("ID_NO_FREE_INCOMING_CONNECTIONS\n");
quit=true;
break;
case ID_CONNECTION_REQUEST_ACCEPTED:
printf("ID_CONNECTION_REQUEST_ACCEPTED\n");
break;
case ID_NEW_INCOMING_CONNECTION:
printf("ID_NEW_INCOMING_CONNECTION from %s\n", packet->systemAddress.ToString());
break;
case ID_DISCONNECTION_NOTIFICATION:
printf("ID_DISCONNECTION_NOTIFICATION\n");
break;
case ID_CONNECTION_LOST:
printf("ID_CONNECTION_LOST\n");
break;
case ID_ADVERTISE_SYSTEM:
// The first conditional is needed because ID_ADVERTISE_SYSTEM may be from a system we are connected to, but replying on a different address.
// The second conditional is because AdvertiseSystem also sends to the loopback
if (rakPeer->GetSystemAddressFromGuid(packet->guid)==RakNet::UNASSIGNED_SYSTEM_ADDRESS &&
rakPeer->GetMyGUID()!=packet->guid)
{
printf("Connecting to %s\n", packet->systemAddress.ToString(true));
rakPeer->Connect(packet->systemAddress.ToString(false), packet->systemAddress.GetPort(),0,0);
//.........这里部分代码省略.........