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

Java Socket连接报JVM_Bind错误 运行客户端端口自动加1问题咨询

问题根因

你最开始碰到的Address already in use: JVM_Bind报错,核心原因是之前调试时残留的服务端进程没有关闭,一直占用对应端口。
后续出现端口号加1、好像跑错程序的问题,是NetBeans的默认运行逻辑导致的:默认状态下,NetBeans Java项目会绑定一个默认主类,你点击顶部通用运行按钮时,不管当前打开编辑的是client.java还是server.java,都会运行项目预设的默认主类(也就是你的server类),所以你以为启动的是客户端,实际是又启动了一个服务端实例:

  • 你第一次启动服务端时,绑定的端口被存活进程占用
  • 第二次误启动服务端时,如果端口写死就会报占用错误;如果你保留了ServerSocket(0)的自动分配逻辑,系统会自动分配下一个可用端口,就会出现端口号比之前大1的现象。

你贴出的服务端、客户端代码本身逻辑没有问题,不存在语法或API使用错误。

解决方法

  • 运行指定类时不要点顶部的通用运行按钮,右键点击对应Java文件,在弹出菜单中选择「运行文件」,就会单独执行当前类的main方法,不会触发默认主类的运行。
  • 每次调试前检查NetBeans底部的运行面板,关掉之前残留的服务端进程,避免多余进程占用端口。
  • 如果还是出现端口占用报错,可以打开Windows命令行执行netstat -ano | findstr "目标端口号",找到占用端口的PID后在任务管理器关闭对应Java进程即可。

正常的运行流程为:右键运行server.java→ 复制控制台打印的端口号 → 替换client.java中Socket构造的端口参数 → 右键运行client.java,此时服务端控制台就会正常打印Client connected。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:48:03