ubuntu

Java在Ubuntu上的网络通信如何配置

小樊
38
2025-09-06 14:49:27
栏目: 编程语言

一、系统网络配置

  1. 安装网络工具
    sudo apt install net-tools  # 安装ifconfig等工具(部分新系统需用ip命令)
    
  2. 配置IP地址
    编辑网络配置文件(如/etc/netplan/01-netcfg.yaml),示例静态IP配置:
    network:
      version: 2
      ethernets:
        enp4s1:  # 网卡名,可通过`ip addr`查看
          dhcp4: no
          addresses: [192.168.1.100/24]  # 静态IP+子网掩码
          gateway4: 192.168.1.1  # 网关
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]  # DNS
    
    应用配置:
    sudo netplan apply
    
  3. 验证网络连通性
    ping google.com  # 测试外网连通性
    ip addr show  # 查看IP配置是否生效
    

二、Java环境配置

  1. 安装JDK
    sudo apt install openjdk-11-jdk  # 推荐使用OpenJDK
    java -version  # 验证安装
    
  2. 设置环境变量(可选)
    编辑~/.bashrc,添加:
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export PATH=$PATH:$JAVA_HOME/bin
    source ~/.bashrc  # 使配置生效
    

三、Java网络通信代码示例

  1. TCP服务器
    import java.io.*;
    import java.net.*;
    public class TCPServer {
        public static void main(String[] args) throws IOException {
            ServerSocket serverSocket = new ServerSocket(12345);  // 监听端口
            System.out.println("Server started on port 12345");
            while (true) {
                Socket socket = serverSocket.accept();
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    System.out.println("Received: " + inputLine);
                    out.println("Server response: " + inputLine);
                }
                socket.close();
            }
        }
    }
    
  2. TCP客户端
    import java.io.*;
    import java.net.*;
    public class TCPClient {
        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("localhost", 12345);  // 连接服务器
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out.println("Hello, Server!");  // 发送消息
            System.out.println("Server says: " + in.readLine());  // 接收响应
            socket.close();
        }
    }
    
  3. 编译与运行
    javac TCPServer.java TCPClient.java  # 编译
    java TCPServer &  # 后台运行服务器
    java TCPClient  # 运行客户端
    

四、网络权限与防火墙

  1. 开放防火墙端口
    sudo ufw allow 12345/tcp  # 允许TCP端口12345(根据实际端口修改)
    sudo ufw status  # 查看防火墙规则
    
  2. 配置Java代理(如需代理访问)
    在代码中设置系统属性:
    System.setProperty("http.proxyHost", "proxy.example.com");
    System.setProperty("http.proxyPort", "8080");
    

五、常见问题排查

参考来源:

0
看了该问题的人还看了