Nếu bạn đọc mã nguồn, bạn sẽ thấy rằng chỉ có thể ghi đè cổng trên dòng lệnh. Nếu bạn muốn thay đổi máy chủ mà nó được phục vụ, bạn sẽ cần phải triển khai test()
phương thức của SimpleHTTPServer
và BaseHTTPServer
chính bạn. Nhưng điều đó sẽ thực sự dễ dàng.
Đây là cách bạn có thể làm điều đó, khá dễ dàng:
import sys
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
def test(HandlerClass=SimpleHTTPRequestHandler,
ServerClass=BaseHTTPServer.HTTPServer):
protocol = "HTTP/1.0"
host = ''
port = 8000
if len(sys.argv) > 1:
arg = sys.argv[1]
if ':' in arg:
host, port = arg.split(':')
port = int(port)
else:
try:
port = int(sys.argv[1])
except:
host = sys.argv[1]
server_address = (host, port)
HandlerClass.protocol_version = protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
if __name__ == "__main__":
test()
Và để sử dụng nó:
> python server.py 127.0.0.1
Serving HTTP on 127.0.0.1 port 8000 ...
> python server.py 127.0.0.1:9000
Serving HTTP on 127.0.0.1 port 9000 ...
> python server.py 8080
Serving HTTP on 0.0.0.0 port 8080 ...