我有以下代码,用于在端口 8000 上运行本地 HTTP 服务器:
# Omitted imports and irrelevant things for brevity.
class ThreadedHTTPServer(SocketServer.ThreadingMixIn, HTTPServer):
pass
class MyClass(object):
server = None
def start_server(self):
handler = MyPageHandler
self.server = ThreadedHTTPServer(('', 8000), handler)
server_thread = threading.Thread(target=self.server.serve_forever)
server_thread.daemon = False
server_thread.start()
def stop_server(self):
self.server.shutdown()
Run Code Online (Sandbox Code Playgroud)
然而,有时当stop_server返回时,监听套接字仍然会打开。我已经通过将其放在os.system("netstat -ln | grep 8000")末尾来验证这一点stop_server,并且它经常显示套接字仍在侦听。
有没有办法只stop_server在套接字关闭后返回?
我是 Java 新手。我在 中使用了写入服务器Golang。我需要将回复发送至HttpExchange. 这是我的代码:
public static void main(String[] args) throws IOException
{
Server = HttpServer.create(new InetSocketAddress(8000),0);
Server.createContext("/login", new SimpleHandler());
Server.setExecutor(null);
Server.start();
}
class SimpleHandler implements HttpHandler
{
@Override
public void handle(HttpExchange request) throws IOException
{
//Here I need to do like request.Response.Write(200,"DONE");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试Python3文档页面上关于HTTP服务器的代码。
网站上发布的代码是:
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
这段代码正在运行。我想尝试ThreadingHTTPServer所以,正如文档所说:
此类 ( ThreadingHTTPServer ) 与 HTTPServer 相同,但通过 ThreadingMixIn 使用线程来处理请求。这对于处理 Web 浏览器预打开套接字非常有用,HTTPServer 将在该套接字上无限期地等待。
所以,我将上面的代码更改为:
def run(server_class=http.server.ThreadingHTTPServer, handler_class=http.server.BaseHTTPRequestHandler$
PORT = 8000
server_address = ('', PORT)
httpd = server_class(server_address, handler_class)
print("server running on port: ", PORT)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Traceback (most recent call last):
File "simple_http_server.py", line 6, in <module>
def run(server_class=http.server.ThreadingHTTPServer, handler_class=http.server.BaseHTTPRequestHandler):
AttributeError: module 'http.server' has no attribute 'ThreadingHTTPServer'
Run Code Online (Sandbox Code Playgroud)
我想补充一点,我最近才使用Python,所以我可能错过了一些东西。
您认为错误的原因是什么?我哪里做错了?
我有一个用 Python 创建的 HTTP 服务器
from http.server import BaseHTTPRequestHandler, HTTPServer
import bson.json_util
import json
server = HTTPServer((ip, port), GetHandler)
print ('Starting server, use <Ctrl-C> to stop')
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
在哪里 GetHandler
class GetHandler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
def do_GET(self):
json_string = json.dumps({"message" : "Hello"}, default=bson.json_util.default)+"\n"
self._set_headers()
self.wfile.write(json_string.encode())#encoding='UTF-8'
return
Run Code Online (Sandbox Code Playgroud)
假设我想从行do_GET中将一个变量传递给类的方法:我该怎么做?GetHandlerserver = HTTPServer((ip, port), GetHandler)
编辑
作为示例,假设我my_str在该行之前定义了一个字符串,server = HTTPServer((ip, port), GetHandler)并且我想将此字符串用作响应消息。
python get parameter-passing httpserver basehttprequesthandler
我在目录中构建了一个 Vue JS 应用程序dist。为了运行,我使用http-server以下命令全局安装:
npm install -g http-server
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行应用程序:
http-server dist
Run Code Online (Sandbox Code Playgroud)
所以我可以访问该网站http://localhost:8080,它工作正常。但在我的应用程序中,我vue-router配置了历史记录模式,因此我应该访问类似 的 URL http://localhost:8080/page1,但问题是http-server返回 404:
curl -i http://localhost:8080/page1
HTTP/1.1 404 Not Found
accept-ranges: bytes
Date: Sat, 11 Sep 2021 12:41:53 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
我正在使用TIdHTTPServer来托管大量现有 HTML 文件。但是,我遇到一个问题,它返回更改后的 HTML。主要是,双引号 ( \xe2\x80\x9c) 被替换为乱码,例如\xc3\xa2\xe2\x82\xac\xc5\x93. 直接从 Edge 中的文件系统查看 HTML 文件显示得很好,但通过此 Indy HTTP 服务器提供服务时相同的页面/文件会被更改。
我通过TFileStream如下方式返回文件:
FS:= TFileStream.Create(FN, fmOpenRead);\n AResponseInfo.ContentStream:= FS;\n\n FE:= LowerCase(ExtractFileExt(FN));\n if FMime.IndexOfName(FE) >= 0 then\n CT:= FMime.Values[FE]\n else\n CT:= \'application/octet-stream\';\n\n AResponseInfo.ContentType:= CT; //text/html in this case\nRun Code Online (Sandbox Code Playgroud)\n原始 HTML 文件如下:
\n<p>\xe2\x80\x9c<strong>Y</strong>\xe2\x80\x9d = Consigned</p>\nRun Code Online (Sandbox Code Playgroud)\n...看起来像这样:
\n\n但是当通过 Indy 提供服务时,HTML 具有以下内容:
\n<p>\xc3\xa2\xe2\x82\xac\xc5\x93<strong>Y</strong>\xc3\xa2\xe2\x82\xac = Consigned</p>\nRun Code Online (Sandbox Code Playgroud)\n...看起来像这样:
\n\n出了什么问题,我该如何解决?
\nserver.port=0Spring Boot 应用程序的默认端口范围是多少?
我正在使用 spring-boot 2.7 (使用默认的 tomcat 服务器)并使用 java 11。
或者范围因操作系统而异?
我正在开发一个包含以下3个组件的简单Web应用程序:
我需要决定使用哪个java webserver.一些选项是:
a)在java(com.sun.net.httpserver)中使用httpserver类并创建一个多线程进程.
b)使用Glassfish服务器并在其上部署创建网页的应用程序等.
c)使用Jetty.
d)?
网络服务器的选择标准是:
稳定性(进程(Web服务器)应该运行几天而不重启)
可能的最大并发请求大约为200.平均情况大约为30.
缓存在Web服务器上完成,如果数据可用或数据处理实体未标记为脏,则从Web服务器本身提供请求.
非常感谢您的建议.
谢谢.罗恩.
我现在正在编写一个http服务器,我在从套接字读取时遇到问题.我的问题是inputStream来自客户端的东西永远不会结束,它一直在阅读,直到客户端关闭.我知道客户端在发送http请求后不会立即关闭与服务器的连接.如何while loop在客户端发送所有请求数据(即标题+正文)时退出.
while (in.hasNextLine()) {
String line = in.nextLine();
if (line.equals("")){ // last line of request header is blank
break; // quit while loop when last line of header is reached
} else {
request = request + line + "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
在阅读了你们的评论和回答之后,这就是我想出来的,
is = incoming.getInputStream();
os = incoming.getOutputStream();
in = new Scanner(is);
out = new DataOutputStream(os);
RequestHandler rh = new RequestHandler();
int length = 0;
while (in.hasNextLine()) {
String line = in.nextLine();
if (line.equals("")) …Run Code Online (Sandbox Code Playgroud) 我想从URL下载一个文件,这个文件:http://download.finance.yahoo/d/quotes.csv? s = YHOO + GOOG + MSFT& f = sl1d1t1c1hgvbap2当我进入浏览器并在我的网址中输入此URL时浏览器,文件会自动下载.我想要的是下载这个文件,而无需使用C语言的程序浏览我的浏览器,我需要这种类型的信息用于金融项目.我尝试使用libcurl下载该文件,但是libcurl会下载与此URL相对应的HTML页面,当然这是空的,因为此URL所做的唯一事情是开始下载.我想这个URL是某种HTTP服务器的方式,但我完全迷失了如何获取这个文件.
提前感谢大家的时间和帮助,如果您可以通过解释或更好的C代码帮助,请随时这样做,不要害怕过于精确.
httpserver ×10
java ×3
python ×3
sockets ×3
c ×1
delphi ×1
deployment ×1
download ×1
formatting ×1
get ×1
glassfish ×1
html ×1
httprequest ×1
indy ×1
jakarta-ee ×1
jetty ×1
python-3.x ×1
server ×1
spring-boot ×1
vue-cli ×1
vue-router ×1
vue.js ×1
webserver ×1