本文整理汇总了C++中raknet::RakPeerInterface::SetOccasionalPing方法的典型用法代码示例。如果您正苦于以下问题:C++ RakPeerInterface::SetOccasionalPing方法的具体用法?C++ RakPeerInterface::SetOccasionalPing怎么用?C++ RakPeerInterface::SetOccasionalPing使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类raknet::RakPeerInterface
的用法示例。
在下文中一共展示了RakPeerInterface::SetOccasionalPing方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: listenSocket
bool
CProxy::start(const std::string& sListenIP,
ushort uListenPort,
const std::string& sLoginSrvIP,
ushort uLoginSrvPort,
const std::vector<s_serverInfos>& vecAreas,
ushort uMaxConnections)
{
// Check if listen address is correctly formated
if (!m_listenAddress.FromStringExplicitPort(sListenIP.c_str(), uListenPort))
{
log_ERROR("Invalid listen address. Aborting.");
return false;
}
// Start listen interface
RakNet::SocketDescriptor listenSocket(uListenPort, sListenIP.c_str());
m_pListenInterface = RakNet::RakPeerInterface::GetInstance();
if (m_pListenInterface->Startup(uMaxConnections, &listenSocket, 1) != RakNet::RAKNET_STARTED)
{
log_ERROR("Failed to startup Raknet interface. Aborting.");
stop();
return false;
}
m_pListenInterface->SetMaximumIncomingConnections(uMaxConnections);
ff::write(pan::notice, "Started listening on ", sListenIP, ":", uListenPort, ".");
ff::write(pan::notice, "Accepting max ", uMaxConnections, " connections.");
ushort uTmpPort = 49777;
// Start login server interface
{
// Check if login server address is correctly formated
if (!m_loginSrvAddress.FromStringExplicitPort(sLoginSrvIP.c_str(), uLoginSrvPort))
{
log_ERROR("Invalid login server address. Aborting.");
stop();
return false;
}
RakNet::SocketDescriptor loginSocketDesc(++uTmpPort, NULL);
while (RakNet::SocketLayer::IsPortInUse(loginSocketDesc.port, loginSocketDesc.hostAddress, loginSocketDesc.socketFamily))
loginSocketDesc.port = uTmpPort++;
// Create and startup login server interface
m_pLoginSrvInterface = RakNet::RakPeerInterface::GetInstance();
if (m_pLoginSrvInterface->Startup(1, &loginSocketDesc, 1) != RakNet::RAKNET_STARTED)
{
log_ERROR("Failed to startup login server interface.");
stop();
return false;
}
int latency = ping(m_pLoginSrvInterface, sLoginSrvIP, uLoginSrvPort);
if (latency < 0)
ff::write(pan::warning, "Failed to ping login server (", sLoginSrvIP, ":", uLoginSrvPort, ").");
else
ff::write(pan::notice, "Pinged login server (", sLoginSrvIP, ":", uLoginSrvPort, ") - ", latency, "ms.");
// Attempt connection
if (m_pLoginSrvInterface->Connect(sLoginSrvIP.c_str(), uLoginSrvPort, NULL, 0) != RakNet::CONNECTION_ATTEMPT_STARTED)
{
ff::write(pan::error, "Connection to login server (", sLoginSrvIP, ":", uLoginSrvPort, ") failed.");
stop();
return false;
}
m_pLoginSrvInterface->SetOccasionalPing(true);
}
// Connect to area servers
for (std::vector<s_serverInfos>::const_iterator it = vecAreas.begin();
it != vecAreas.end();
it++)
{
RakNet::SocketDescriptor areaSocketDesc(uTmpPort++, NULL);
while (RakNet::SocketLayer::IsPortInUse(areaSocketDesc.port, areaSocketDesc.hostAddress, areaSocketDesc.socketFamily))
areaSocketDesc.port = uTmpPort++;
RakNet::RakPeerInterface* pAreaItf = RakNet::RakPeerInterface::GetInstance();
if (pAreaItf->Startup(1, &areaSocketDesc, 1) != RakNet::RAKNET_STARTED)
{
log_ERROR("Failed to startup an area server interface.");
continue;
}
if (pAreaItf->Connect((*it).m_srvIP.c_str(), (*it).m_srvPort, NULL, 0) != RakNet::CONNECTION_ATTEMPT_STARTED)
{
ff::write(pan::error, "Connection attempt to area server (", (*it).m_srvIP, ":", (*it).m_srvPort, ") failed.");
continue;
}
//.........这里部分代码省略.........
示例2: main
int main(int argc, char** argv) {
RakNet::RakPeerInterface *server = RakNet::RakPeerInterface::GetInstance();
RakNet::Packet* p;
unsigned char packetIdentifier;
RakNet::SystemAddress clientID = RakNet::UNASSIGNED_SYSTEM_ADDRESS;
RakNet::RakNetStatistics *rss;
RakNet::SocketDescriptor socketDescriptors[2];
char portstring[30];
socketDescriptors[0].port = SERVER_PORT;
socketDescriptors[0].socketFamily = AF_INET; // Test out IPV4
socketDescriptors[1].port = SERVER_PORT;
socketDescriptors[1].socketFamily = AF_INET6; // Test out IPV6
if (server->Startup(4, socketDescriptors, 2) != RakNet::RAKNET_STARTED) {
std::cout << "IPV6 not supported, starting with IPV4-only interface..." << std::endl;
if (server->Startup(4, socketDescriptors, 1) != RakNet::RAKNET_STARTED) {
std::cerr << "Error creating server, exiting..." << std::endl;
exit(-1);
}
}
std::cout << "Server started successfully. Listening on port " << SERVER_PORT << std::endl;
server->SetMaximumIncomingConnections(20);
server->SetOccasionalPing(true);
server->SetUnreliableTimeout(1000);
DataStructures::List<RakNet::RakNetSocket2*> sockets;
server->GetSockets(sockets);
std::cout << "Socket addresses used by RakNet:" << std::endl;
for (unsigned int i = 0; i < sockets.Size(); i++) {
printf("%i. %s\n", i + 1, sockets[i]->GetBoundAddress().ToString(true));
}
char message[2048];
// Loop for input
while (1)
{
// This sleep keeps RakNet responsive
RakSleep(30);
if (kbhit())
{
// Notice what is not here: something to keep our network running. It's
// fine to block on gets or anything we want
// Because the network engine was painstakingly written using threads.
Gets(message, sizeof(message));
if (strcmp(message, "quit") == 0)
{
puts("Quitting.");
break;
}
if (strcmp(message, "stat") == 0)
{
rss = server->GetStatistics(server->GetSystemAddressFromIndex(0));
StatisticsToString(rss, message, 2);
printf("%s", message);
printf("Ping %i\n", server->GetAveragePing(server->GetSystemAddressFromIndex(0)));
continue;
}
if (strcmp(message, "ping") == 0)
{
server->Ping(clientID);
continue;
}
if (strcmp(message, "pingip") == 0)
{
printf("Enter IP: ");
Gets(message, sizeof(message));
printf("Enter port: ");
Gets(portstring, sizeof(portstring));
if (portstring[0] == 0)
strcpy(portstring, "1234");
server->Ping(message, atoi(portstring), false);
continue;
}
if (strcmp(message, "kick") == 0)
{
server->CloseConnection(clientID, true, 0);
continue;
}
if (strcmp(message, "getconnectionlist") == 0)
{
printf("Connections:\n");
RakNet::SystemAddress systems[10];
unsigned short numConnections = 10;
server->GetConnectionList((RakNet::SystemAddress*) &systems, &numConnections);
for (int i = 0; i < numConnections; i++)
{
printf("%i. %s\n", i + 1, systems[i].ToString(true));
}
//.........这里部分代码省略.........