You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Socket餐厅调研程序BindException端口占用问题求助

解决Socket端口占用(BindException)问题的方案

一、立即解决当前端口占用

  • 定位占用9090端口的进程:
    • Windows系统执行命令:netstat -ano | findstr :9090,获取进程PID后,打开任务管理器结束对应进程。
    • Linux/macOS系统执行命令:lsof -i :9090 或 netstat -tulpn | grep :9090,用kill -9 <PID>终止进程。

二、代码层面优化(避免重复触发异常)

1. 确保ServerSocket正确释放端口

接收模块(Respuesta)中的ServerSocket必须在使用完毕后关闭,建议在finally块中处理异常场景下的资源释放:

ServerSocket serverSocket = null;
try {
    serverSocket = new ServerSocket(9090);
    // 接收客户端数据、写入TXT的业务逻辑
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (serverSocket != null && !serverSocket.isClosed()) {
        try {
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 禁止重复绑定端口

如果Respuesta是NetBeans开发的Swing桌面应用,不要在保存按钮的点击事件中重复创建ServerSocket。将ServerSocket设为类成员变量,仅在窗口初始化时创建一次,持续监听客户端连接即可。

3. 启用端口复用(可选)

若需要快速重启接收模块,可设置ServerSocket的SO_REUSEADDR选项,允许端口被快速复用:

ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(9090));

三、场景适配建议

  • 接收模块作为Socket服务端,只需监听一次9090端口,无需每次保存操作都重新绑定。
  • 发送模块作为客户端,每次发送数据后及时关闭Socket,避免无效连接残留。

内容的提问来源于stack exchange,提问作者Acidous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:10:00