winsocket2 初始化封装
public sealed class WinSocket2
{
private static bool _initialized = false;
public static bool InitSocket2()
{
if (_initialized) return true;
try
{
WSADATA wsaData;
int result = WSAStartup(0x0202, out wsaData);
if (result == 0)
{
_initialized = true;
return true;
}
return false;
}
catch (Exception ex)
{
Console.WriteLine($"WSAStartup failed: {ex.Message}");
return false;
}
}
public static void CleanupSocket2()
{
if (_initialized)
{
WSACleanup();
_initialized = false;
}
}
[DllImport("ws2_32.dll", CallingConvention = CallingConvention.Winapi)]
public static extern int WSAStartup(ushort wVersionRequested, out WSADATA lpWSAData);
[DllImport("ws2_32.dll", CallingConvention = CallingConvention.Winapi)]
public static extern int WSACleanup();
[StructLayout(LayoutKind.Sequential)]
public struct WSADATA
{
public ushort wVersion;
public ushort wHighVersion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)]
public string szDescription;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)]
public string szSystemStatus;
public ushort iMaxSockets;
public ushort iMaxUdpDg;
public IntPtr lpVendorInfo;
}
}