110,548
社区成员
发帖
与我相关
我的任务
分享
BOOL AcceptEx(
__in SOCKET sListenSocket,
__in SOCKET sAcceptSocket,
__in PVOID lpOutputBuffer,
__in DWORD dwReceiveDataLength,
__in DWORD dwLocalAddressLength,
__in DWORD dwRemoteAddressLength,
__out LPDWORD lpdwBytesReceived,
__in LPOVERLAPPED lpOverlapped
);
[CLSCompliantAttribute(false)]
[ComVisibleAttribute(false)]
public NativeOverlapped* Pack(
IOCompletionCallback iocb,
Object userData
)
[ComVisibleAttribute(true)]
[CLSCompliantAttribute(false)]
public delegate void IOCompletionCallback(
uint errorCode,
uint numBytes,
NativeOverlapped* pOVERLAP
)
public static GCHandle Alloc(
Object value,
GCHandleType type
)
BOOL WINAPI SetProcessAffinityMask(
__in HANDLE hProcess,
__in DWORD_PTR dwProcessAffinityMask
);
// 此API用于设置进程的CPU亲缘属性,第2个参数是"位或"表示. 对于2*4核系统,则设置位0xFF
DWORD_PTR WINAPI SetThreadAffinityMask(
__in HANDLE hThread,
__in DWORD_PTR dwThreadAffinityMask
);
// 此API用于设置线程的CPU亲缘属性,第2个参数是"位或"表示. 需要注意的是,dwThreadAffinityMask必须是dwProcessAffinityMask的子集
DWORD WINAPI SetThreadIdealProcessor(
__in HANDLE hThread,
__in DWORD dwIdealProcessor
);
// 此API用于设置线程的首选CPU,操作系统在调度线程时优先考虑首选核心, 第2个参数是以0为基数的处理器ID
1
//好奇怪啊,我下面的代码老是抛异常,说optValue错误
clientSocket.SetSocketOption(SocketOptionLevel.Socket
, SocketOptionName.UpdateAcceptContext
, m_Socket.Handle
);
// 不管怎么写它都说 optValue错误
clientSocket.SetSocketOption(SocketOptionLevel.Socket
, SocketOptionName.UpdateAcceptContext
, m_Socket
);
// 我现在只能使用p/invoke了, 这样就可以,哪位可以给出不是p/invoke的写法??
{
IntPtr ptr = Marshal.AllocHGlobal(IntPtr.Size);
Marshal.WriteIntPtr( ptr, socket.Handle);
int ret = setsockopt(clientSocket.Handle
, SOL_SOCKET
, SO_UPDATE_ACCEPT_CONTEXT
, ptr
, IntPtr.Size
);
Marshal.FreeHGlobal(ptr);
return ret;
}