diff options
author | chai <215380520@qq.com> | 2023-11-25 18:39:02 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-11-25 18:39:02 +0800 |
commit | 0e63c4a2c6dec8dfa260501fb7d73750261ea7b7 (patch) | |
tree | f6f2291be65d195d6082b523a56183c332715240 /Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs |
+ init
Diffstat (limited to 'Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs')
-rw-r--r-- | Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs b/Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs new file mode 100644 index 0000000..a416723 --- /dev/null +++ b/Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs @@ -0,0 +1,75 @@ +using System; +using System.Runtime.InteropServices; + +namespace Steamworks; + +[Serializable] +[StructLayout(LayoutKind.Sequential, Pack = 1)] +public struct SteamNetworkingIPAddr : IEquatable<SteamNetworkingIPAddr> +{ + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] + public byte[] m_ipv6; + + public ushort m_port; + + public const int k_cchMaxString = 48; + + public void Clear() + { + NativeMethods.SteamAPI_SteamNetworkingIPAddr_Clear(ref this); + } + + public bool IsIPv6AllZeros() + { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros(ref this); + } + + public void SetIPv6(byte[] ipv6, ushort nPort) + { + NativeMethods.SteamAPI_SteamNetworkingIPAddr_SetIPv6(ref this, ipv6, nPort); + } + + public void SetIPv4(uint nIP, ushort nPort) + { + NativeMethods.SteamAPI_SteamNetworkingIPAddr_SetIPv4(ref this, nIP, nPort); + } + + public bool IsIPv4() + { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsIPv4(ref this); + } + + public uint GetIPv4() + { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_GetIPv4(ref this); + } + + public void SetIPv6LocalHost(ushort nPort = 0) + { + NativeMethods.SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost(ref this, nPort); + } + + public bool IsLocalHost() + { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsLocalHost(ref this); + } + + public void ToString(out string buf, bool bWithPort) + { + IntPtr intPtr = Marshal.AllocHGlobal(48); + NativeMethods.SteamNetworkingIPAddr_ToString(ref this, intPtr, 48u, bWithPort); + buf = InteropHelp.PtrToStringUTF8(intPtr); + Marshal.FreeHGlobal(intPtr); + } + + public bool ParseString(string pszStr) + { + using InteropHelp.UTF8StringHandle pszStr2 = new InteropHelp.UTF8StringHandle(pszStr); + return NativeMethods.SteamNetworkingIPAddr_ParseString(ref this, pszStr2); + } + + public bool Equals(SteamNetworkingIPAddr x) + { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsEqualTo(ref this, ref x); + } +} |