gpt4 book ai didi

dart - 使用 F5 发送垃圾邮件时 Web 服务器崩溃

转载 作者:行者123 更新时间:2023-12-03 01:52:26 26 4
gpt4 key购买 nike

我制作了一个简单的网络服务器,但每次我在短时间内刷新页面多次时,它都会崩溃。我只是在浏览器中输入 127.0.0.1:8080,然后按 F5 发送垃圾邮件。以下是重现此问题的代码:

void main()
{
HttpServer server = new HttpServer();
server.addRequestHandler((req) => true, handleGET);
server.listen('127.0.0.1', 8080);
}

void handleGET(HttpRequest req, HttpResponse res)
{
var requestedFile = ".${req.path}";

if(req.path == "/")
{
requestedFile = requestedFile.concat("index.html");
}

File file = new File(requestedFile);
file.exists().then((bool found) {
if(found)
{
file.openInputStream().pipe(res.outputStream);
}
else
{
res.statusCode = HttpStatus.NOT_FOUND;
res.outputStream.close();
}
});
}

我得到的错误如下:

Unhandled exception:
StreamException: Stream closed
#0 _SocketOutputStream._write (dart:io:6017:30)
#1 _HttpResponse._writeHeader (dart:io:5981:18)
#2 _HttpRequestResponseBase._ensureHeadersSent (dart:io:2696:19)
#3 _HttpResponse._streamClose (dart:io:2921:23)
#4 _HttpOutputStream.close (dart:io:3078:36)
#5 _pipe.<anonymous closure> (dart:io:6271:28)
#6 _BaseDataInputStream._checkScheduleCallbacks.issueCloseCallback (dart:io:6231:59)
#7 _Timer._createTimerHandler._handleTimeout (dart:io:6804:28)
#8 _Timer._createTimerHandler._handleTimeout (dart:io:6812:7)
#9 _Timer._createTimerHandler.<anonymous closure> (dart:io:6820:23)
#10 _ReceivePortImpl._handleMessage (dart:isolate-patch:37:92)

在出现这个市长异常之前,我经常会收到一堆警告,例如 WSASend failed: 10053,但这些警告不会导致服务器崩溃。如果这个问题与某些特定的实现有关,我在 Windows 上工作。

最佳答案

因为您非常快地重新加载,所以您的代码最终会尝试写入已关闭的套接字。因此,您可能应该捕获 StreamException 并忽略它。可能有人会说 io 库应该可以帮助你更多一些。我刚刚提交了这个错误:

http://code.google.com/p/dart/issues/detail?id=7334&thanks=7334&ts=1355280746

关于dart - 使用 F5 发送垃圾邮件时 Web 服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com