gpt4 book ai didi

rebol - 调试并避免周期性 REBOL2 错误,try[] 没有(?)捕获?

转载 作者:行者123 更新时间:2023-12-04 15:20:21 25 4
gpt4 key购买 nike

玩弄 Rebol/Core 时显然无法捕获的错误(278-3-1) 制作一种网络服务器来提供静态文本,其中包含指向新服务位置的重定向链接。

错误的具体位置似乎在 Carl Sassenrath 编写的示例代码中他自己,早在 2006 年,所以我有点困惑,这么多年后可能会有一个未被发现的错误。

我让其中三个脚本同时运行,监控三个单独的端口。本质上,该脚本可以正常工作...当一次使用多个浏览器(在所有并行脚本上)重复访问时,它似乎很稳定...但是一个接一个地失败了。有时在 2 分钟后,有时在 20 分钟后 - 添加打印语句后有时甚至在 60 分钟后 - 但最终它们会像这样失败:

** Script Error: Out of range or past end
** Where: forever
** Near: not empty? request: first http-port



我尝试将程序循环的几乎每个部分都包装在 try[][exception] 中,但错误仍然存​​在。不幸的是,每年这个时候我的搜索功能似乎很弱,因为我没有找到任何可以解释这个问题的东西。

该代码是 Carl Sassenrath 的 Tiny Web Server 的精简版。 ,稍作修改以绑定(bind)到特定 IP,并发出 HTML 而不是加载文件:
REBOL [title: "TestMovedServer"]
AppName: "Test"
NewSite: "http://test.myserver.org"

listen-port: open/lines tcp://:81 browse http://10.100.44.6?
buffer: make string! 1024 ; will auto-expand if needed

forever [
http-port: first wait listen-port
clear buffer

while [not empty? request: first http-port][
print request
repend buffer [request newline]
print "----------"
]
repend buffer ["Address: " http-port/host newline]
print buffer
Location: ""
mime: "text/html"
parse buffer ["get" ["http" | "/ " | copy Location to " "]]

data: rejoin [{
<HTML><HEAD><TITLE>Site Relocated</TITLE></HEAD>
<BODY><CENTER><BR><BR><BR><BR><BR><BR>
<H1>} AppName { have moved to <A HREF="} NewSite {">} NewSite {</A></H1>
<BR><BR><BR>Please update the link you came from.
<BR><BR><BR><BR><BR><A HREF="} NewSite Location {">(Continue directly to the requested page)</A>
</CENTER></BODY></HTML>
}]
insert data rejoin ["HTTP/1.0 200 OK^/Content-type: " mime "^/^/"]
write-io http-port data length? data
close http-port
print "============"
]

我很期待看到你们从中得到什么!

最佳答案

尝试从关闭的连接中读取时出现错误。这似乎有效。

n: 0
forever [
http-port: first wait listen-port
clear buffer
if attempt [all [request: first http-port not empty? request]] [
until [
print request
repend buffer [request newline]
print "----------"
any [not request: first http-port empty? request]
]
repend buffer ["Address: " http-port/host newline]
print buffer
Location: ""
mime: "text/html"
parse buffer ["get" ["http" | "/ " | copy Location to " "]]

data: rejoin [{
<HTML><HEAD><TITLE>Site Relocated</TITLE></HEAD>
<BODY><CENTER><BR><BR><BR><BR><BR><BR>
<H1>} AppName n: n + 1 { has moved to <A HREF="} NewSite {">} NewSite {</A></H1>
<BR><BR><BR>Please update the link you came from.
<BR><BR><BR><BR><BR><A HREF="} NewSite Location {">(Continue directly to the requested page)</A>
</CENTER></BODY></HTML>
}]
insert data rejoin ["HTTP/1.0 200 OK^/Content-type: " mime "^/^/"]
write-io http-port data length? data
]
attempt [close http-port]
print "============"
]

关于rebol - 调试并避免周期性 REBOL2 错误,try[] 没有(?)捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396474/

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