java 中 jetty 仅监听 IPv4 的写法
在 Jetty 中,如果希望 ContextHandler 或 WebSocket 服务 仅监听 IPv4(禁用 IPv6)
强制 Jetty 绑定到 IPv4 地址(0.0.0.0)
在创建 Server 实例时,明确指定监听的 Host 为 0.0.0.0(IPv4 通配地址)
代码示例
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; public class JettyIPv4Example { public static void main(String[] args) { // 创建 Server,不指定端口(后续通过 ServerConnector 配置) Server server = new Server(); // 创建一个 ServerConnector,绑定到 IPv4 的 0.0.0.0 ServerConnector connector = new ServerConnector(server); connector.setHost("0.0.0.0"); // 关键点:强制 IPv4 connector.setPort(8080); // 设置监听端口 // 将 Connector 添加到 Server server.addConnector(connector); // 设置 ContextHandlerCollection ContextHandlerCollection contexts = new ContextHandlerCollection(); ContextHandler contextHandler = new ContextHandler(); contextHandler.setContextPath("/chat"); contextHandler.setHandler(new com.joincall.j3c.JoinCallCC.AgentWebSocketHandler()); contexts.addHandler(contextHandler); server.setHandler(contexts); // 启动服务 try { server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } } }
说明:
1. ServerConnector.setHost("0.0.0.0")
强制 Jetty 监听所有 IPv4 地址,避免绑定到 ::(IPv6)。
2. 如果未设置 host,Jetty 默认可能同时监听 IPv4 和 IPv6。

浙公网安备 33010602011771号