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

局域网内Java客户端与服务端跨PC连接失败求助

局域网Java客户端-服务端连接问题排查指南

我来帮你一步步排查局域网里Java客户端和服务端连不上的问题,咱们从最基础的环节开始查起:

1. 先确认两台PC的基础网络连通性

这是最核心的前提,网络不通的话代码写得再对也没用:

  • 在客户端PC打开命令提示符(Windows)或终端(Linux/macOS),输入 ping 192.168.0.103
    • 如果ping不通,先解决网络问题:
      • 检查两台PC是不是真的在同一个局域网(比如连的同一个WiFi或交换机)
      • 核对服务端PC的IP是否正确:在服务端用 ipconfig(Windows)或 ip addr(Linux/macOS)查看实际局域网IP,别输错了!
      • 暂时关闭两台PC的防火墙试试,很多时候防火墙会拦截局域网连接

2. 检查服务端代码的关键配置

你只提供了客户端代码,服务端的写法直接决定能不能被局域网设备访问,要确保这几点:

  • 服务端要绑定所有网卡:如果服务端代码里写了 new ServerSocket(9999, 50, InetAddress.getByName("127.0.0.1")),那只能本地访问,得改成绑定 0.0.0.0(允许所有网卡)或者服务端的实际局域网IP,最简单的写法是 new ServerSocket(9999)(默认绑定所有网卡)
  • 服务端必须调用 serverSocket.accept() 进入监听状态,这个方法是阻塞的,要确保服务端程序正常运行到这一步,没有崩溃

给你一个可以直接测试的基础服务端代码:

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) throws Exception {
        int port = 9999;
        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("服务端已启动,等待客户端连接...");
        // 阻塞等待客户端连接
        Socket clientSocket = serverSocket.accept();
        System.out.println("客户端已连接:" + clientSocket.getInetAddress());
        
        // 简单测试:给客户端发送一条消息
        DataOutputStream dout = new DataOutputStream(clientSocket.getOutputStream());
        dout.writeUTF("Hello from Server!");
        dout.flush();
        
        // 关闭资源(实际开发建议用try-with-resources自动关闭)
        dout.close();
        clientSocket.close();
        serverSocket.close();
    }
}

3. 补全并检查客户端代码

你提供的客户端代码没写完,先确保代码完整无语法错误,这里给你补全一个基础测试版本:

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) throws Exception {
        String ip = "192.168.0.103";
        int port = 9999;
        // 尝试连接服务端
        Socket s = new Socket(ip, port);
        System.out.println("已成功连接到服务端");
        
        // 读取服务端发来的消息
        DataInputStream din = new DataInputStream(s.getInputStream());
        String serverMsg = din.readUTF();
        System.out.println("收到服务端消息:" + serverMsg);
        
        // 关闭资源
        din.close();
        s.close();
    }
}

4. 务必放行服务端的端口

防火墙拦截是最常见的坑:

  • Windows:打开「Windows Defender防火墙」→「高级设置」→「入站规则」→ 新建规则,选择「端口」,输入9999,允许所有网络连接
  • Linux:如果用ufw防火墙,输入 sudo ufw allow 9999;如果用firewalld,输入 sudo firewall-cmd --add-port=9999/tcp --permanent 然后 sudo firewall-cmd --reload
  • 测试的时候可以先暂时关闭防火墙,确认能连接后再配置规则

5. 其他容易忽略的细节

  • 检查两台PC的子网掩码是否一致,比如都是255.255.255.0,不然可能不在同一个子网
  • 看看服务端PC有没有开启VPN、代理软件,这些会干扰局域网连接,暂时关闭试试
  • 确认服务端程序真的在运行,启动后看看控制台有没有输出「服务端已启动,等待客户端连接...」,如果没输出说明程序崩溃了,检查是否有异常抛出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:34:47