用python实现http服务端,指定参数-p为开放端口、默认开放端口为8080
时间: 2023-09-03 19:26:14 浏览: 313
### 回答1:
您可以使用python的内置模块`http.server`和`socketserver`来实现一个HTTP服务端。
代码示例如下:
```
import argparse
import http.server
import socketserver
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--port", type=int, default=8080, help="port to listen on")
args = parser.parse_args()
with socketserver.TCPServer(("", args.port), http.server.SimpleHTTPRequestHandler) as httpd:
print(f"Serving on port {args.port}...")
httpd.serve_forever()
```
使用方法:
- 运行代码后,服务器将在默认端口8080上运行;
- 如果您想指定开放端口,可以运行`python filename.py -p port`,其中`port`为您想要开放的端口号。
### 回答2:
要用Python实现一个HTTP服务端,并指定参数-p为开放端口,默认的开放端口为8080,可以使用Python标准库中的http.server模块。以下是一个简单的示例代码:
```python
import argparse
from http.server import HTTPServer, BaseHTTPRequestHandler
class HTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, World!')
def run_server(port):
server_address = ('', port)
httpd = HTTPServer(server_address, HTTPRequestHandler)
print(f'Starting server on port {port}...')
httpd.serve_forever()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--port', type=int, default=8080, help='Port to listen on')
args = parser.parse_args()
run_server(args.port)
```
在这个示例中,我们首先导入了`argparse`和`http.server`模块。`argparse`用于解析命令行参数,而`http.server`中包含了HTTP服务器的实现。
然后,我们定义了一个名为`HTTPRequestHandler`的类,继承自`BaseHTTPRequestHandler`。这个类用于处理HTTP请求,并在收到GET请求时返回一个简单的响应。
接下来,我们定义了`run_server`函数,它用于启动HTTP服务器。这个函数接收一个端口参数,并根据该参数构建服务器地址。然后,使用`HTTPServer`创建HTTP服务器实例,并调用`serve_forever`方法启动服务器。
最后,我们在脚本的主程序中使用`argparse`模块解析命令行参数,并传递给`run_server`函数以启动HTTP服务器。如果端口参数未指定,默认使用8080作为开放端口。
要运行这个HTTP服务器,可以在命令行中执行以下命令:
```
python server.py -p 8000
```
这将在端口8000上启动HTTP服务器。如果不指定-p参数,默认将在端口8080上启动。
### 回答3:
用Python实现HTTP服务端,可以使用`http.server`模块中的`HTTPServer`类来搭建基本的HTTP服务器,并通过指定参数来开放端口。
以下是实现HTTP服务端、并指定参数`-p`为开放端口、默认开放端口为8080的Python代码:
```python
import argparse
from http.server import HTTPServer, BaseHTTPRequestHandler
# 创建自定义的请求处理类
class MyRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# 处理GET请求
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Hello, World!')
def run_http_server(port):
# 创建HTTP服务器,并指定请求处理类
server_address = ('', port)
httpd = HTTPServer(server_address, MyRequestHandler)
print(f'Starting HTTP server on port {port}...')
httpd.serve_forever()
if __name__ == '__main__':
# 解析命令行参数
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--port', type=int, default=8080, help='the port to listen on')
args = parser.parse_args()
# 启动HTTP服务器
run_http_server(args.port)
```
你可以将以上代码保存为一个Python文件(例如`http_server.py`),然后在命令行中运行该文件,如下所示:
```
python http_server.py -p 8000
```
以上命令将开启一个监听在8000端口的HTTP服务器。如果不指定`-p`参数,则默认监听在8080端口。
注意:运行该代码时,需要在命令行中输入`python`命令,并确保已经安装了所需的Python环境。