background image

DWORD chunk_size = atoi(chunk_header);
if (chunk_size == 0)

break;
BYTE[] chunk_body = read_bytes(chunk_size);

body += chunk_body;
}

}
}

string read_line()

{
while (TRUE)

{
int n = strpos(read_buffer, b.\nb., read_buffer.size());

if (n > 0)
break;

read_buffer += socket.read();
}

return read_buffer.extract(n);
}

Byte[] read_bytes(int sz)

{
while (TRUE)

{
if (sz <= read_buffer.size())

break;
read_buffer += socket.read();

}
return read_buffer.extract(sz);

}

  在这段代码中,执行流程与逻辑流程是一致的,然而,如果在那些被动接收事件的

场合使用了异步套接字,就必须编写下面这样的代码了:

read()

{
read_buffer += socket.read();

if (state == read_request_line)