From a8a4b5d2a2fb2e7a887c92b670ec6a6e548f0b31 Mon Sep 17 00:00:00 2001 From: Jocke Date: Thu, 10 Mar 2016 15:59:55 +0100 Subject: [PATCH] Disconnect on udp --- src/Engine/Network/Client.cpp | 2 ++ src/Engine/Network/UDPClient.cpp | 12 ++++++++---- src/Engine/Network/UDPServer.cpp | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index 62fee514..6737b3ee 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -381,6 +381,7 @@ void Client::ignoreFields(Packet& packet, const ComponentInfo& componentInfo) void Client::parseSnapshot(Packet& packet) { + LOG_INFO("Snapshot received"); // Read input commands std::size_t numInputCommands = packet.ReadPrimitive(); for (std::size_t i = 0; i < numInputCommands; ++i) { @@ -471,6 +472,7 @@ void Client::disconnect() m_PacketID = 0; Packet packet(MessageType::Disconnect, m_SendPacketID); m_Reliable.Send(packet); + m_Unreliable.Disconnect(); m_Reliable.Disconnect(); createMainMenu(); } diff --git a/src/Engine/Network/UDPClient.cpp b/src/Engine/Network/UDPClient.cpp index 5bd3877e..149e860b 100644 --- a/src/Engine/Network/UDPClient.cpp +++ b/src/Engine/Network/UDPClient.cpp @@ -24,7 +24,13 @@ bool UDPClient::Connect(std::string playerName, std::string address, int port) void UDPClient::Disconnect() { + m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both); + m_Socket->close(); + m_Socket = nullptr; + int lastReceivedSnapshotGroup = 0; + m_PacketSegmentMap.clear(); + PacketID m_SendPacketID = 0; } void UDPClient::Receive(Packet& packet) @@ -100,9 +106,7 @@ void UDPClient::readPartOfPacket() memcpy(&packetGroupIndex, m_ReadBuffer + 2 * sizeof(int), sizeof(int)); int packetGroupSize = 0; memcpy(&packetGroupSize, m_ReadBuffer + 3 * sizeof(int), sizeof(int)); - //LOG_INFO("Packet group: %i. Group index: %i. Group size: %i", packetGroup, packetGroupIndex, packetGroupSize); - //LOG_INFO("Packet size: %i.", sizeOfPacket); - + LOG_INFO("Packet group: %i. Group index: %i. Group size: %i. Packet size: %i.", packetGroup, packetGroupIndex, packetGroupSize, sizeOfPacket); if (sizeOfPacket > m_Socket->available()) { LOG_WARNING("UDPClient::readBuffer(): We haven't got the whole packet yet."); // return; @@ -213,7 +217,7 @@ bool UDPClient::GetNextPacket(Packet & packet) lastReceivedSnapshotGroup = packet.Group(); } // No need to get next it as we are returning. - //LOG_INFO("Packet parsed"); + LOG_INFO("Packet parsed"); m_PacketSegmentMap.erase(it); return true; } else { diff --git a/src/Engine/Network/UDPServer.cpp b/src/Engine/Network/UDPServer.cpp index 818fa8fb..c3f87fd7 100644 --- a/src/Engine/Network/UDPServer.cpp +++ b/src/Engine/Network/UDPServer.cpp @@ -95,6 +95,7 @@ void UDPServer::SendToConnectedPlayers(Packet& packet, std::map