windows完成端口 等待客户端发送一次消息才能完成AcceptEx操作的解决方法

    xiaoxiao2021-04-13  34

    程序捕捉不到accept这个事件,但是可以接受连接; 连接接受以后,可以捕捉到接收数据事件,也可以捕捉到连接关闭事件。

    但为什么最初的接受客户端连接的事件就不能捕捉呢?

    问题的根源在于服务端必须等到客户端send一次数据,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,     __inout LPOVERLAPPED lpOverlapped     );

    或者

    AcceptEx(

    __in SOCKET sListenSocket,

        __in SOCKET sAcceptSocket,     __in PVOID lpOutputBuffer,     __in DWORD dwReceiveDataLength,//--------------------------修改这个参数的值=0,把接收长度设置成0就可以直接捕捉到到连接消息了     __in DWORD dwLocalAddressLength,     __in DWORD dwRemoteAddressLength,     __out LPDWORD lpdwBytesReceived,     __inout LPOVERLAPPED lpOverlapped);

    这样就搞定了。

    转载请注明原文地址: https://ju.6miu.com/read-668432.html

    最新回复(0)