นอกจากนี้คุณยังสามารถให้บริการบนพอร์ตที่มีลำดับสูงสุดถัดไปซึ่งทำสิ่งนี้ใน Python:
import SimpleHTTPServer
import SocketServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
port = 8000
while True:
try:
httpd = SocketServer.TCPServer(('', port), Handler)
print 'Serving on port', port
httpd.serve_forever()
except SocketServer.socket.error as exc:
if exc.args[0] != 48:
raise
print 'Port', port, 'already in use'
port += 1
else:
break
หากคุณต้องการทำสิ่งเดียวกันกับยูทิลิตี้อื่น ๆ มันอาจจะสะดวกกว่าในฐานะของสคริปต์ทุบตี:
#!/usr/bin/env bash
MIN_PORT=${1:-1025}
MAX_PORT=${2:-65535}
(netstat -atn | awk '{printf "%s\n%s\n", $4, $4}' | grep -oE '[0-9]*$'; seq "$MIN_PORT" "$MAX_PORT") | sort -R | head -n 1
ตั้งค่าให้ใช้งานได้ด้วยชื่อget-free-port
และคุณสามารถทำสิ่งนี้:
someprogram --port=$(get-free-port)
นั่นไม่น่าเชื่อถือเท่ากับวิธี Python ดั้งเดิมเนื่องจากสคริปต์ทุบตีไม่ได้จับพอร์ต - กระบวนการอื่นสามารถคว้าพอร์ตก่อนที่กระบวนการของคุณจะทำ (สภาพการแข่งขัน) - แต่ก็อาจมีประโยชน์เพียงพอเมื่อใช้ยูทิลิตี้ที่ไม่ได้ ' ไม่มีวิธีการลองด้วยตนเองอีกครั้ง
python -m SimpleHTTPServer 8081