/// <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.");
            }
        }
    // Token: 0x0600097E RID: 2430 RVA: 0x00045A6C File Offset: 0x00043C6C
    public ZSteamSocket(SteamNetworkingIPAddr host)
    {
        ZSteamSocket.RegisterGlobalCallbacks();
        string str;

        host.ToString(out str, true);
        ZLog.Log("Starting to connect to " + str);
        this.m_con = SteamNetworkingSockets.ConnectByIPAddress(ref host, 0, null);
        ZSteamSocket.m_sockets.Add(this);
    }
 // Token: 0x06000974 RID: 2420 RVA: 0x00045828 File Offset: 0x00043A28
 public bool GetJoinHost(out CSteamID steamID, out SteamNetworkingIPAddr addr)
 {
     steamID = this.m_joinUserID;
     addr    = this.m_joinAddr;
     if (this.m_joinUserID.IsValid() || this.m_haveJoinAddr)
     {
         this.m_joinUserID   = CSteamID.Nil;
         this.m_haveJoinAddr = false;
         this.m_joinAddr.Clear();
         return(true);
     }
     return(false);
 }
Beispiel #5
0
		// Set to specified IP:port
		public void SetIPAddr(SteamNetworkingIPAddr addr) {
			NativeMethods.SteamAPI_SteamNetworkingIdentity_SetIPAddr(ref this, ref addr);
		}
 static void Postfix(SteamNetworkingIPAddr serverAddr)
 {
     ValheimFaveServers.instance._Logger.LogInfo("Saved IP address in patch on set server host");
     ValheimFaveServers.instance.gameServerIp = serverAddr;
 }