9 internal static class Winsock
113 [StructLayout(
LayoutKind.Sequential, Size = 408)]
182 [DllImport(
"ws2_32.dll", ExactSpelling =
true, SetLastError =
true)]
185 [DllImport(
"ws2_32.dll", SetLastError =
true)]
188 [DllImport(
"ws2_32.dll", ExactSpelling =
true, SetLastError =
true)]
191 [DllImport(
"ws2_32.dll", SetLastError =
true)]
194 [DllImport(
"ws2_32.dll", SetLastError =
true)]
197 [DllImport(
"ws2_32.dll", SetLastError =
true)]
200 [DllImport(
"ws2_32.dll", SetLastError =
true)]
203 [DllImport(
"ws2_32.dll", SetLastError =
true)]
206 [DllImport(
"ws2_32.dll", SetLastError =
true)]
209 [DllImport(
"ws2_32.dll", ExactSpelling =
true, SetLastError =
true)]
212 [DllImport(
"ws2_32.dll", SetLastError =
true)]
215 [DllImport(
"ws2_32.dll", SetLastError =
true)]
218 [DllImport(
"ws2_32.dll", SetLastError =
true)]
221 [DllImport(
"ws2_32.dll", SetLastError =
true)]
222 internal unsafe
static extern int recvfrom(
SafeSocketHandle socketHandle, [In]
byte* pinnedBuffer, [In]
int len, [In]
SocketFlags socketFlags, [Out]
byte[] socketAddress, [In][Out] ref
int socketAddressSize);
224 [DllImport(
"ws2_32.dll", SetLastError =
true)]
227 [DllImport(
"ws2_32.dll", SetLastError =
true)]
228 internal unsafe
static extern int select([In]
int ignoredParameter, [In]
IntPtr* readfds, [In]
IntPtr* writefds, [In]
IntPtr* exceptfds, [In]
IntPtr nullTimeout);
230 [DllImport(
"ws2_32.dll", SetLastError =
true)]
233 [DllImport(
"ws2_32.dll", SetLastError =
true)]
234 internal unsafe
static extern int sendto(
SafeSocketHandle socketHandle, [In]
byte* pinnedBuffer, [In]
int len, [In]
SocketFlags socketFlags, [In]
byte[] socketAddress, [In]
int socketAddressSize);
236 [DllImport(
"ws2_32.dll", ExactSpelling =
true, SetLastError =
true)]
239 [DllImport(
"ws2_32.dll", SetLastError =
true)]
242 [DllImport(
"ws2_32.dll", SetLastError =
true)]
245 [DllImport(
"ws2_32.dll", SetLastError =
true)]
248 [DllImport(
"ws2_32.dll", SetLastError =
true)]
251 [DllImport(
"ws2_32.dll", SetLastError =
true)]
254 [DllImport(
"ws2_32.dll", SetLastError =
true)]
257 [DllImport(
"ws2_32.dll", SetLastError =
true)]
260 [DllImport(
"ws2_32.dll", SetLastError =
true)]
263 [DllImport(
"ws2_32.dll",
CharSet =
CharSet.Unicode, SetLastError =
true)]
266 [DllImport(
"ws2_32.dll", SetLastError =
true)]
269 [DllImport(
"ws2_32.dll", SetLastError =
true)]
272 [DllImport(
"ws2_32.dll", EntryPoint =
"WSAIoctl", SetLastError =
true)]
275 [DllImport(
"ws2_32.dll", SetLastError =
true)]
282 return WSARecv(socketHandle,
buffer, bufferCount, out bytesTransferred, ref socketFlags, overlapped, completionRoutine);
286 [DllImport(
"ws2_32.dll", SetLastError =
true)]
292 return WSARecvFrom(socketHandle, &wSABuffer, bufferCount, out bytesTransferred, ref socketFlags, socketAddressPointer, socketAddressSizePointer, overlapped, completionRoutine);
299 return WSARecvFrom(socketHandle, buffers2, bufferCount, out bytesTransferred, ref socketFlags, socketAddressPointer, socketAddressSizePointer, overlapped, completionRoutine);
303 [DllImport(
"ws2_32.dll", SetLastError =
true)]
310 return WSASend(socketHandle, buffers2, bufferCount, out bytesTransferred, socketFlags, overlapped, completionRoutine);
314 [DllImport(
"ws2_32.dll", SetLastError =
true)]
320 return WSASendTo(socketHandle, &wSABuffer, bufferCount, out bytesTransferred, socketFlags, socketAddress, socketAddressSize, overlapped, completionRoutine);
327 return WSASendTo(socketHandle, buffers2, bufferCount, out bytesTransferred, socketFlags, socketAddress, socketAddressSize, overlapped, completionRoutine);
331 [DllImport(
"ws2_32.dll",
CharSet =
CharSet.Unicode, SetLastError =
true)]
334 [DllImport(
"ws2_32.dll",
CharSet =
CharSet.Unicode, SetLastError =
true)]
343 unsafe
static void Initialize()
347 if (socketError != 0)
358 [DllImport(
"ws2_32.dll")]
361 [DllImport(
"ws2_32.dll")]
378 [DllImport(
"mswsock.dll", SetLastError =
true)]
static bool SetHandleInformation(SafeHandle hObject, HandleFlags dwMask, HandleFlags dwFlags)
static unsafe bool CancelIoEx(IntPtr handle, NativeOverlapped *lpOverlapped)
static void SetLastError(int errorCode)
static unsafe bool CancelIoEx(SafeHandle handle, NativeOverlapped *lpOverlapped)
@ HANDLE_FLAG_PROTECT_FROM_CLOSE
static bool SetFileCompletionNotificationModes(SafeHandle handle, FileCompletionNotificationModes flags)
FileCompletionNotificationModes
@ SkipCompletionPortOnSuccess
static unsafe bool TransmitFile(SafeHandle socket, IntPtr fileHandle, int numberOfBytesToWrite, int numberOfBytesPerSend, NativeOverlapped *overlapped, TransmitFileBuffers *buffers, TransmitFileOptions flags)
static SocketError ioctlsocket([In] IntPtr handle, [In] int cmd, [In][Out] ref int argp)
static unsafe SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [Out] byte *optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
static IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] ProtocolType protocolType, [In] IntPtr protocolInfo, [In] uint group, [In] SocketConstructorFlags flags)
static unsafe SocketError getpeername([In] SafeSocketHandle socketHandle, [Out] byte *socketAddress, [In][Out] ref int socketAddressSize)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPMulticastRequest mreq, [In] int optionLength)
static unsafe SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] byte *optionValue, [In] int optionLength)
TransmitPacketsElementFlags
static IntPtr WSASocketW([In] AddressFamily addressFamily, [In] SocketType socketType, [In] int protocolType, [In] IntPtr protocolInfo, [In] int group, [In] int flags)
@ WSA_FLAG_NO_HANDLE_INHERIT
@ WSA_FLAG_MULTIPOINT_D_LEAF
@ WSA_FLAG_MULTIPOINT_D_ROOT
@ WSA_FLAG_MULTIPOINT_C_LEAF
@ WSA_FLAG_MULTIPOINT_C_ROOT
static SocketError WSACleanup()
static SocketError WSAIoctl(SafeSocketHandle socketHandle, [In] int ioControlCode, [In][Out] ref Guid guid, [In] int guidSize, out IntPtr funcPtr, [In] int funcPtrSize, out int bytesTransferred, [In] IntPtr shouldBeNull, [In] IntPtr shouldBeNull2)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength)
static unsafe int recv(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags)
static SocketError closesocket([In] IntPtr socketHandle)
static SocketError ioctlsocket([In] SafeSocketHandle socketHandle, [In] int cmd, [In][Out] ref int argp)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IntPtr pointer, [In] int optionLength)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPMulticastRequest optionValue, [In][Out] ref int optionLength)
static SocketError WSAIoctl_Blocking(SafeSocketHandle socketHandle, [In] int ioControlCode, [In] byte[] inBuffer, [In] int inBufferSize, [Out] byte[] outBuffer, [In] int outBufferSize, out int bytesTransferred, [In] IntPtr overlapped, [In] IntPtr completionRoutine)
static unsafe SocketError WSASend(SafeHandle socketHandle, Span< WSABuffer > buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static SocketError listen([In] SafeSocketHandle socketHandle, [In] int backlog)
static unsafe SocketError getsockname(SafeSocketHandle socketHandle, byte *socketAddress, int *socketAddressSize)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe int send(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags)
static unsafe int select([In] int ignoredParameter, [In] IntPtr *readfds, [In] IntPtr *writefds, [In] IntPtr *exceptfds, [In] ref TimeValue timeout)
static unsafe int sendto(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [In] byte[] socketAddress, [In] int socketAddressSize)
static unsafe int select([In] int ignoredParameter, [In] IntPtr *readfds, [In] IntPtr *writefds, [In] IntPtr *exceptfds, [In] IntPtr nullTimeout)
static SocketError WSAConnect(SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize, [In] IntPtr inBuffer, [In] IntPtr outBuffer, [In] IntPtr sQOS, [In] IntPtr gQOS)
static SocketError shutdown([In] SafeSocketHandle socketHandle, [In] int how)
static void EnsureInitialized()
static unsafe int recvfrom(SafeSocketHandle socketHandle, [In] byte *pinnedBuffer, [In] int len, [In] SocketFlags socketFlags, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize)
static SocketError bind([In] SafeSocketHandle socketHandle, [In] byte[] socketAddress, [In] int socketAddressSize)
static unsafe SocketError WSARecv(SafeHandle socketHandle, Span< WSABuffer > buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe SocketError WSASendTo(SafeHandle socketHandle, ref WSABuffer buffer, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe SocketError WSASendTo(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref int optionValue, [In] int optionLength)
static unsafe SocketError WSAStartup(short wVersionRequested, WSAData *lpWSAData)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out Linger optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSARecvFrom(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, IntPtr socketAddressPointer, IntPtr socketAddressSizePointer, NativeOverlapped *overlapped, IntPtr completionRoutine)
static SocketError getsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, out IPv6MulticastRequest optionValue, [In][Out] ref int optionLength)
static unsafe SocketError WSASend(SafeHandle socketHandle, WSABuffer *buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe bool WSAGetOverlappedResult([In] SafeSocketHandle socketHandle, [In] NativeOverlapped *overlapped, out uint bytesTransferred, [In] bool wait, out SocketFlags socketFlags)
static SocketError setsockopt([In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPv6MulticastRequest mreq, [In] int optionLength)
static unsafe SocketError WSARecv(SafeHandle socketHandle, WSABuffer *buffer, int bufferCount, out int bytesTransferred, ref SocketFlags socketFlags, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe SocketError WSASendTo(SafeHandle socketHandle, WSABuffer[] buffers, int bufferCount, out int bytesTransferred, SocketFlags socketFlags, IntPtr socketAddress, int socketAddressSize, NativeOverlapped *overlapped, IntPtr completionRoutine)
static unsafe int WSADuplicateSocket([In] SafeSocketHandle s, [In] uint dwProcessId, [In] WSAPROTOCOL_INFOW *lpProtocolInfo)
static IntPtr accept(SafeSocketHandle socketHandle, [Out] byte[] socketAddress, [In][Out] ref int socketAddressSize)
static SocketError setsockopt([In] IntPtr handle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref Linger linger, [In] int optionLength)
static int SizeOf(object structure)
static int CompareExchange(ref int location1, int value, int comparand)
unsafe fixed byte address[16]
TransmitPacketsElementFlags flags
unsafe fixed uint ChainEntries[7]
WSAPROTOCOLCHAIN ProtocolChain
unsafe fixed char szProtocol[256]
AddressFamily iAddressFamily