【发布时间】:2013-03-19 06:22:26
【问题描述】:
在响应中添加随机数据。这发生在所有站点和页面上,并且对于每个特定页面,这些数据都是固定的。 示例:
Connection: close
X-Powered-By: PHP/5.4.11
1fb4
<!DOCTYPE html..........
或
<script>
$('#toggle_debug').cl
134
ick(function () {
Сode:
if (e.BytesTransferred > 0)
{
Response.AddRange(e.Buffer);
if (Response.Count >= MaxContentLength)
{
Final();
}
else
{
e.SetBuffer(0, BufferSize);
e.AcceptSocket.ReceiveAsync(e);
}
}
响应 - 包含字节的列表。此外, StringBuilder 和其他有同样的问题。附加符号是固定的,不会改变。有什么问题?
【问题讨论】:
-
Receive和Read返回一个整数,告诉您读取了多少字节。缓冲区中只有那么多字节是有效的。如果要阅读所有内容,则需要使用循环。 -
不需要添加整个缓冲区和一部分吗?
-
我猜你需要使用缓冲区的第一个
e.BytesTransferred字节。阅读文档了解详细信息。类似Response.AddRange(e.Buffer.Take(e.BytesTransferred)) -
@CodesInChaos 问题是关于
ReceiveAsync而不是Receive或Read,不是吗? -
@PeterRitchie 我还没有与
ReceiveAsync合作过,但我希望它能够与Read&co 分享该特性。一些细节,例如返回值与e.BytesTransferred的变化,但我希望获得的字节数少于请求的字节数的基本问题保持不变。
标签: c# sockets asynchronous response