summaryrefslogtreecommitdiff
path: root/Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-11-25 18:39:02 +0800
committerchai <215380520@qq.com>2023-11-25 18:39:02 +0800
commit0e63c4a2c6dec8dfa260501fb7d73750261ea7b7 (patch)
treef6f2291be65d195d6082b523a56183c332715240 /Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs
+ init
Diffstat (limited to 'Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs')
-rw-r--r--Assembly_Firstpass/Steamworks/SteamNetworkingIPAddr.cs75
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);
+ }
+}