1

重複の可能性:
MSG_WAITALL の大きなメッセージでソケット recv() がハングする

私はウェブサーバーを開発しています。新しい接続リクエストごとに、スレッドを生成しています。スレッド関数では、recv() を使用してリクエストを受信して​​います。

    while (1) {ret = (int)recv(s, buf, sizeof(buf), MSG_WAITALL);
    SYSLOG(LOG_USER, "s=%d recv returned with ret=%d\n", s, ret);
    if (ret == -1) {
        if (errno == 11)
            continue;
        else
            break;
    } else if (ret == 0)
        break;
...........   //handling the request

ただし、最初のリクエストのみを処理し、クライアント (httperf) で client-timeout エラーが発生します。recv() は、戻り値 -1 および errno EAGAIN で戻ります。同じ接続を介して複数のリクエストを処理する方法は?

4

0 に答える 0