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 回答