Mac と Windows で動作するはずの C 言語でポータブル アプリケーションを作成しています。私が作成しているソケット コードは POSIX ソケットを使用しています。Windows の Winsock API には同様の機能があります。
サーバーはJavaで書かれており、これはサーバーに接続して通信するクライアントアプリケーションです。
改行文字で終了する行を読み取る C# や Java と同じように、readline 関数を作成する必要があります。
現在、次の関数を使用していますが、文字ごとに読んでいるため、非常に効率的な方法ではないと思います
    //return number of bytes read or -1 on error
int readline(SOCKET s, char* pResponse)
{
    char c = '0';
    int status = 0;
    int i = 0;
    while(true)
    {
        status = recv(s,&c, 1,0);
        if(status == SOCKET_ERROR)
        {
            //socket error
            return -1;
        }
        else if(status == 0)
        {
            //closed ?
            return -1;
        }
        else if(status > 0)
        {
            pResponse[i] = c;
            i++;
            if(c == '\n' || c == '\r\n')
            {
                break;
            }
        }
    }
    return i;
}
送信者/サーバーはこの行のみを送信し、クライアントからの応答を待つため、ソケット データ全体を読み取っても問題ないと想定できます。
では、これをこれよりもうまく書くことができますか? 文字ごとの読み取りはパフォーマンスの問題ですか? 任意の助けをいただければ幸いです。