以下代码在 {{src/clj/clojure/core/server.clj}} 中用于验证端口号是否有效
(defn- validate-opts "验证服务器配置选项" [{:keys [name port accept] :as opts}] (doseq [prop [:name :port :accept]] (required opts prop)) (when (or (not (integer? port)) (not (< -1 port 65535))) (throw (ex-info (str "无效的套接字服务器端口: " port) opts))))
然而,这是轻微错误的,因为端口 65535 被排除,但实际上它是一个有效的端口。
`
user=> (defn is-invalid-port [port] (or (not (integer? port)) (not (< -1 port 65535))))
'user/is-invalid-port
user=> (is-invalid-port 65534)
false
user=> (is-invalid-port 65535) ; 应为 false!
true
user=> (is-invalid-port 65536)
true
`
这由 https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#ServerSocket(int) 支持
{quote}
IllegalArgumentException - 如果端口号参数超出指定的有效端口号范围,这个范围是从 0 到 65535(包含)。
{quote}
补丁: port-65535-obo-v2.patch
预筛选: Alex Miller