Updated the serverlist, now prints adress and port of the server.

This commit is contained in:
stiffly
2016-02-17 17:05:10 +01:00
parent 950ecba1c0
commit 46987beefb
5 changed files with 23 additions and 8 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ public:
void parseTCPConnect(Packet& packet);
void parsePlayerConnected(Packet& packet);
void parsePing();
void parseHeartbeat(Packet& packet);
void parseHeartbeat(Packet& packet, PlayerDefinition);
void parseKick();
void parsePlayersSpawned(Packet& packet);
void parseEntityDeletion(Packet& packet);
+2
View File
@@ -16,6 +16,8 @@ public:
void Send(Packet & packet, PlayerDefinition & playerDefinition);
void Send(Packet & packet);
void Disconnect();
int Port() { return acceptor->local_endpoint().port(); }
std::string Address();
private:
// TCP logic
boost::asio::io_service m_IOService;
+8 -6
View File
@@ -72,7 +72,7 @@ void Client::Update()
localArea.Endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address().from_string("127.0.0.1"), 13);
m_Heartbeat.Receive(packet, localArea);
if(packet.GetMessageType() == MessageType::Heartbeat) {
parseHeartbeat(packet);
parseHeartbeat(packet, localArea);
}
}
if (m_IsConnected) {
@@ -128,9 +128,6 @@ void Client::parseMessageType(Packet& packet)
case MessageType::ComponentDeleted:
parseComponentDeletion(packet);
break;
case MessageType::Heartbeat:
parseHeartbeat(packet);
break;
case MessageType::OnPlayerDamage:
parsePlayerDamage(packet);
break;
@@ -186,7 +183,7 @@ void Client::parsePing()
}
void Client::parseHeartbeat(Packet& packet)
void Client::parseHeartbeat(Packet& packet, PlayerDefinition pd)
{
// Pop size, message type, and ID
packet.ReadPrimitive<int>();
@@ -194,7 +191,12 @@ void Client::parseHeartbeat(Packet& packet)
packet.ReadPrimitive<int>();
std::string serverName = packet.ReadString();
int playersConnected = packet.ReadPrimitive<int>();
LOG_INFO("Serverlist\nName\tPlayers\n%s\t%i\n", serverName.c_str(), playersConnected);
std::string address = packet.ReadString();
int port = packet.ReadPrimitive<int>();
//TODO: save these to some kind of list which can be represented to the player
//TODO: This should not happen when a client is connected to a server
LOG_INFO("Serverlist\nName\tPlayers\tIP\t\tPort\n%s\t%i\t%s\t%i\n", serverName.c_str(), playersConnected, address, port);
}
void Client::parseKick()
+3 -1
View File
@@ -241,8 +241,10 @@ void Server::sendPing()
void Server::sendHeartBeat()
{
Packet packet(MessageType::Heartbeat);
packet.WriteString("This is a servername"); // server name
packet.WriteString("Bob"); // server name
packet.WritePrimitive<int>(m_ConnectedPlayers.size());
packet.WriteString(m_Reliable.Address());
packet.WritePrimitive<int>(m_Reliable.Port());
m_Heartbeat.Send(packet);
}
+9
View File
@@ -74,7 +74,16 @@ void TCPServer::Send(Packet & packet)
void TCPServer::Disconnect()
{
}
std::string TCPServer::Address()
{
boost::asio::ip::tcp::resolver resolver(m_IOService);
boost::asio::ip::tcp::resolver::query query(boost::asio::ip::tcp::v4(), boost::asio::ip::host_name(), "");
boost::asio::ip::tcp::resolver::iterator it = resolver.resolve(query);
boost::asio::ip::tcp::endpoint endpoint = *it;
return endpoint.address().to_string().c_str();
}
void TCPServer::Receive(Packet & packet, PlayerDefinition & playerDefinition)