0

netty のコードから生の非同期 http パーサーを作成して、すべての netty の依存関係を削除しようとしていますが、このコードを取得できません。

private void skipControlCharacters(ByteBuffer buffer) {
    for (;;) {
        char c = (char) ByteBufferUtil.readUnsignedByte(buffer);
        if (!Character.isISOControl(c) &&
            !Character.isWhitespace(c)) {
            buffer.position(buffer.position()-1);
            break;
        }
    }
}

フィードするテストがあります

 GET / HTT

そしてフィードイン

 P/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n

当然、「GET / HTT」だけの最初のパケットは、BufferUnderflowException が発生するまでループにスタックします。非同期解析では、常に完全なデータ パケットを取得できるとは限りません (これが、http に \r\n\r\n がある理由であり、完全な http 要求パケットをいつ取得したかがわかります)。または、この解析は、事前解析を行う場合にのみ機能しますか??? \r\n\r\n を受け取るまで自分でデータをキャッシュし続けなければならない (他のレイヤーは好まないが、http パーサーは http の解析について知っており、\r\n\r\n は http 固有であることを知っている) )。

ありがとう、ディーン

4

1 に答える 1

0

気にしないでください、ばかげた間違い、G は正しく出ていませんでしたが、スペースとして来ました。

于 2013-01-04T17:48:50.160 に答える