/// <summary>
        /// Sets up Socket ready to send data to endpoint as a client
        /// </summary>
        /// <param name="endPoint"></param>
        public void Connect(IEndPoint endPoint)
        {
            switch (_steamOptions.SteamMode)
            {
            case SteamModes.P2P:

                var steamEndPoint = (SteamEndpoint)endPoint;
                var steamIdentity = new SteamNetworkingIdentity();
                steamIdentity.SetSteamID(steamEndPoint.Address);

                _steamSocketManager.HoHSteamNetConnection = SteamNetworkingSockets.ConnectP2P(ref steamIdentity, 0, 0, Array.Empty <SteamNetworkingConfigValue_t>());

                _steamSocketManager.SteamConnections.Add(steamEndPoint, _steamSocketManager.HoHSteamNetConnection);
                break;

            case SteamModes.UDP:

                _endPoint = (SteamSocketFactory.SteamEndPointWrapper)endPoint;

                var address = new SteamNetworkingIPAddr();
                address.SetIPv6(((IPEndPoint)_endPoint.inner).Address.GetAddressBytes(), (ushort)((IPEndPoint)_endPoint.inner).Port);

                _steamSocketManager.HoHSteamNetConnection =
                    SteamNetworkingSockets.ConnectByIPAddress(ref address, 0,
                                                              Array.Empty <SteamNetworkingConfigValue_t>());

                _steamSocketManager.SteamConnections.Add(_endPoint, _steamSocketManager.HoHSteamNetConnection);
                break;

            default:
                Debug.LogWarning("Unknown steam mode. Please check if mode has been supported.");
                break;
            }
        }
        /// <summary>
        /// Starts listens for data on an endpoint
        /// <para>Used by Server to allow clients to connect</para>
        /// </summary>
        /// <param name="endPoint">the endpoint to listen on</param>
        public void Bind(IEndPoint endPoint)
        {
            switch (_steamOptions.SteamMode)
            {
            case SteamModes.P2P:
                _steamSocketManager.Socket =
                    SteamNetworkingSockets.CreateListenSocketP2P(0, 0, Array.Empty <SteamNetworkingConfigValue_t>());
                break;

            case SteamModes.UDP:

                _endPoint = (SteamSocketFactory.SteamEndPointWrapper)endPoint;

                var address = new SteamNetworkingIPAddr();
                address.SetIPv6(((IPEndPoint)_endPoint.inner).Address.GetAddressBytes(), (ushort)((IPEndPoint)_endPoint.inner).Port);

                _steamSocketManager.Socket =
                    SteamNetworkingSockets.CreateListenSocketIP(ref address, 0,
                                                                Array.Empty <SteamNetworkingConfigValue_t>());
                break;

            default:
                _steamSocketManager.LogDebug("Unknown steam mode. Please check if mode has been supported.", LogType.Warning);

                throw new NotImplementedException("Unknown steam mode. This mode must not be implemented fully yet.");
            }
        }