在我的 C# 应用程序中,我使用外部 DLL 的函数。此 DLL 本身使用网络功能。所以有必要从我的 C# 应用程序中初始化 Winsock 以让网络套接字为这个 DLL 工作。这就是我尝试执行 WSAStartup 进行初始化的方式,但它似乎不起作用:
class Program
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
internal struct WSAData
{
internal Int16 version;
internal Int16 highVersion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)]
internal String description;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)]
internal String systemStatus;
internal Int16 maxSockets;
internal Int16 maxUdpDg;
internal IntPtr vendorInfo;
}
[DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern Int32 WSAStartup(Int16 wVersionRequested, out WSAData wsaData);
static void Main(string[] args)
{
WSAData wsaData;
wsaData.version = 0;
wsaData.highVersion = 0;
WSAStartup(0,out wsaData); // to initialise windows socket
... // calling external DLL functions
}
}
WSAStartup() 似乎调用成功,但使用的 DLL 仍然无法访问网络。所以似乎 WSAStartup() 出于某种原因没有工作。有什么想法我在这里做错了吗?
亲切的问候
迈克尔