0

私のアプリケーションは、WSASend と WSARecv を使用してクライアントからデータを同時に送受信できます。では、IOCP 処理スレッドで完了した操作 (送信または受信) をどのように区別できますか?

BOOL bReturn = GetQueuedCompletionStatus(srv.m_hCompPort, &dwBytesTransfered, (LPDWORD)&lpContext, &pOverlapped, INFINITE);

この目的のために OVERLAPED 構造を使用できると思っていましたが、使用できません。何か案が?

ありがとう!

4

1 に答える 1

0

解決策は非常に簡単です:

struct iOverlaped : public OVERLAPPED{
    enum Type {
        Send,
        Receive
    };
    iOverlaped(Type type_ ) {
        ZeroMemory(this, sizeof(iOverlaped));
        type = type_;
    }

    Type type;
};

そして、すべての接続に対して、重複する 2 つのインスタンス (操作の種類ごとに 1 つ) を作成する必要があります ...

于 2013-06-14T02:26:04.270 に答える