程序无法捕获名为accept的事件,但可以接受连接; 接受连接后,可以捕获接收数据的事件和关闭连接的事件。 但是,为什么不能捕捉到最初接受客户端连接的事件呢?
问题的根本原因是,在客户端发送数据之前,服务端无法完成AcceptEx操作。 那么,你怎么处理? 当然有。
(PASCAL FAR * LPFN_ACCEPTEX )
__in SOCKET sListenSocket,
__in SOCKET sAcceptSocket,
__in PVOID lpOutputBuffer,
__in DWORD dwReceiveDataLength,//------------可通过更改此参数的值=0并将接收信长设置为0来捕获直接连接的消息
__in DWORD dwLocalAddressLength,
__in DWORD dwRemoteAddressLength,
__out LPDWORD lpdwBytesReceived,
_ _ inoutlpoverlappedlpoverlapped
);
或者
AcceptEx (
__in SOCKET sListenSocket,
__in SOCKET sAcceptSocket,__in PVOID lpOutputBuffer,__in DWORD dwReceiveDataLength, /------------------ -通过将接收信长设置为0,可以直接捕获到连接消息__in DWORD dwLocalAddressLength,_ _ in dword
到此结束。